For input string nghĩa là gì

Dynamics NAV 2009 Xem thêm...Ít hơn

Bài viết này áp dụng cho Microsoft Dynamics NAV cho tất cả các nước và tất cả ngôn ngữ.

Giả sử rằng bạn chạy một chức năng dịch vụ Web bằng cách sử dụng tham số thập phân trong Microsoft Dynamics NAV 2009. Khi tham số thập phân được xác định, trả lại giá trị được lặp lại. Khi tham số bị thiếu, bạn nhận được thông báo sai lỗi sau:

"Chuỗi nhập vào không đúng định dạng". Khi tham số Int, lỗi như mong muốn "nguyên không phải trống.  Nguyên bị thiếu hoặc không hợp lệ trong biểu thức".

Vấn đề này xảy ra trong các sản phẩm sau:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1

Cập nhật nóng được hỗ trợ do Microsoft cung cấp. Đó là một phần "Tải xuống Hotfix sẵn có" ở đầu bài viết cơ sở kiến thức này. Nếu bạn đang gặp sự cố tải xuống, cài đặt hotfix này, hoặc có câu hỏi hỗ trợ kỹ thuật khác, liên hệ với đối tác của bạn hoặc, nếu đăng ký kế hoạch hỗ trợ trực tiếp với Microsoft, bạn có thể liên hệ với hỗ trợ kỹ thuật cho Microsoft Dynamics và tạo ra một yêu cầu hỗ trợ mới. Để thực hiện việc này, ghé thăm website sau của Microsoft:

//mbs.microsoft.com/support/newstart.aspxBạn cũng có thể liên hệ hỗ trợ kỹ thuật cho Microsoft Dynamics qua điện thoại bằng cách sử dụng các liên kết cho quốc gia số điện thoại cụ thể. Để thực hiện việc này, ghé thăm một web site sau của Microsoft:

Đối tác

//mbs.microsoft.com/partnersource/support/Khách hàng

//mbs.microsoft.com/customersource/support/information/SupportInformation/global_support_contacts_eng.htmTrong trường hợp đặc biệt, chi phí thường phát sinh để hỗ trợ cuộc gọi có thể bị hủy bỏ nếu chuyên viên hỗ trợ kỹ thuật cho Microsoft Dynamics và sản phẩm liên quan xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng bất kỳ vấn đề không Cập Nhật cụ thể trong câu hỏi và câu hỏi hỗ trợ bổ sung.

Sau khi bạn yêu cầu một hotfix Microsoft Dynamics NAV, siêu liên kết sẽ được gửi cho bạn trong e-mail.

E-mail sẽ chứa một liên kết và mật khẩu. Bạn có thể sử dụng các siêu liên kết để tải xuống hotfix Microsoft Dynamics NAV hoặc các tập tin Cập Nhật. Khi bạn bấm vào siêu liên kết, hộp thoại Tệp tải xuống – cảnh báo bảo mật mở. Sau đó, bạn được nhắc để chạy, lưu hoặc hủy bỏ tải xuống.

Nếu bạn bấm chạy, các tệp bắt đầu tải xuống và trình giải nén. Bạn phải chỉ định thư mục cho tệp mới và sau đó cung cấp mật khẩu.

Nếu bạn bấm lưu, bạn phải chỉ định đường dẫn lưu tệp nén. Khi bạn mở tệp mà bạn đã lưu, bạn được nhắc chỉ định đường dẫn tệp. Sau đó, bạn phải cung cấp mật khẩu được cung cấp trong email.

Nếu bạn bấm huỷ, dừng quá trình tải xuống.

Microsoft Dynamics NAV nền tảng hotfix và bản Cập Nhật được thực hiện có sẵn như là một tệp. Để cài đặt một hotfix Microsoft Dynamics NAV hoặc bản Cập Nhật, bạn phải thay thế tệp cài đặt Microsoft Dynamics NAV sẵn có với hotfix hay cập nhật tệp. Để thực hiện việc này, hãy làm theo các bước sau.

Trong cài đặt Microsoft Dynamics NAV khách hàng truyền thống, thay thế các tệp sau bằng cách sử dụng các hotfix hoặc tệp Cập Nhật.

một string

lớp string

query string

kiểu string

string literal

chuỗi string

Error Message: Exception in thread "main" java.lang.NumberFormatException: For input string: "Ace of Clubs" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at set07102.Cards.main(Cards.java:68) C:\Users\qasim\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

có nghĩa :

There was an error. We try to give you as much information as possible It was an Exception in main thread. It's called NumberFormatException and has occurred for input "Ace of Clubs". at line 65th of NumberFormatException.java which is a constructor, which was invoked from Integer.parseInt() which is in file Integer.java in line 580, which was invoked from Integer.parseInt() which is in file Integer.java in line 615, which was invoked from method main in file Cards.java in line 68. It has resulted in exit code 1

Nói cách khác, bạn đã cố gắng phân tích cú pháp "Ace of Clubs"thành một intphương thức mà Java không thể làm được Integer.parseInt. Java đã cung cấp stacktrace đẹp mắt cho bạn biết chính xác vấn đề là gì. Công cụ bạn đang tìm là trình gỡ lỗi và sử dụng các điểm ngắt sẽ cho phép bạn kiểm tra trạng thái ứng dụng của mình tại thời điểm đã chọn.

Giải pháp hoàn toàn có thể là logic sau trong trường hợp bạn muốn sử dụng nghiên cứu và phân tích cú pháp :

if (cards[index].startsWith("Ace")) value = 1; else if (cards[index].startsWith("King")) value = 12; else if (cards[index].startsWith("Queen")) value = 11; ... else { try { Integer.parseInt(string.substring(0, cards[index].indexOf(" "))); } catch (NumberFormatException e){ //something went wrong } }

Một ngoại lệ là một sự kiện, xảy ra trong quá trình thực thi một chương trình, làm gián đoạn luồng hướng dẫn bình thường của chương trình.

– Tài liệu

Cấu tạo và cách sử dụng trong Integer#parseInt

static NumberFormatException forInputString(String s) { return new NumberFormatException("For input string: \"" + s + "\""); } public NumberFormatException (String s) { super (s); }

Chúng rất quan trọng để hiểu cách đọc stacktrace. Xem cách NumberFormatExceptionném từ Integer#parseInt:

if (s == null) { throw new NumberFormatException("null"); }

hoặc sau đó nếu định dạng của đầu vào String skhông thể phân tích cú pháp:

throw NumberFormatException.forInputString(s);

Ném để chỉ ra rằng ứng dụng đã cố gắng nỗ lực quy đổi một chuỗi thành một trong những kiểu số, nhưng chuỗi đó không có định dạng thích hợp .

– Tài liệu

NumberFormatException extends IllegalArgumentException. Nó cho chúng ta biết rằng nó chuyên biệt hơn IllegalArgumentException. Thật vậy, nó được sử dụng để làm nổi bật rằng mặc dù, loại đối số là đúng ( String) nội dung của Stringkhông phải là số ( a, b, c, d, e, f được coi là các chữ số trong HEX và hợp pháp khi cần thiết ).

Làm thế nào để tôi sửa nó?
Chà, đừng sửa sự thật là nó đã bị ném. Thật tốt khi nó được ném đi. Có một số điều bạn cần xem xét:

Xem thêm: NUCE là trường gì? Thông tin tuyển sinh mới nhất 2021

  1. Tôi có thể đọc stacktrace không?
  2. Là Stringnguyên nhân gây ra Exceptiona null?
  3. Nó có giống một con số không?
  4. Nó là ‘chuỗi của tôi’ hay đầu vào của người dùng?
  5. còn tiếp

Quảng cáo. 1.

Dòng đầu tiên của thông báo là thông tin rằng Ngoại lệ đã xảy ra và đầu vào Stringgây ra sự cố. Chuỗi luôn theo sau :và được trích dẫn ( "some text"). Sau đó, bạn trở nên quan tâm đến việc đọc stacktrace từ cuối, vì một vài dòng đầu tiên thường NumberFormatExceptionlà hàm tạo, phương thức phân tích cú pháp, v.v. Sau đó, ở phần cuối, có phương pháp của bạn mà bạn đã tạo lỗi. Nó sẽ được chỉ ra trong tệp mà nó đã được gọi và trong phương thức nào. Ngay cả một dòng sẽ được đính kèm. Bạn sẽ thấy. Ví dụ về cách đọc stacktrace ở trên.

Quảng cáo. 2.

Khi bạn thấy, thay vì "For input string:"và đầu vào, có null( không phải"null" ), điều đó có nghĩa là bạn đã cố chuyển tham chiếu rỗng cho một số. Nếu bạn thực sự muốn coi là 0 hoặc bất kỳ số nào khác, bạn có thể quan tâm đến một bài đăng khác của tôi trên StackOverflow. Nó có sẵn ở đây .

Mô tả cách giải quyết các lỗi không mong muốn nullđược mô tả kỹ trên luồng StackOverflow NullPointerException là gì và tôi có thể sửa lỗi đó như thế nào? .

Quảng cáo. 3.

Nếu Stringtheo sau dấu :và được trích dẫn trông giống như một số theo ý kiến ​​của bạn, có thể có một ký tự mà hệ thống của bạn không giải mã được hoặc một khoảng trắng không nhìn thấy. Rõ ràng là " 6"không thể phân tích cú pháp cũng như "123 "không thể. Đó là vì không gian. Nhưng nó có thể xảy ra, rằng Stringý muốn trông giống như "6"nhưng thực sự thì chiều dài của nó sẽ lớn hơn số chữ số bạn có thể nhìn thấy.

Trong trường hợp này, tôi khuyên bạn nên sử dụng trình gỡ lỗi hoặc ít nhất System.out.printlnvà in độ dài của đoạn văn Stringbạn đang cố gắng phân tích cú pháp. Nếu nó hiển thị nhiều hơn số chữ số, hãy thử chuyển stringToParse.trim()sang phương thức phân tích cú pháp. Nếu nó không hoạt động, hãy sao chép toàn bộ chuỗi sau :và giải mã nó bằng bộ giải mã trực tuyến. Nó sẽ cung cấp cho bạn mã của tất cả các ký tự.

Cũng có một trường hợp mà tôi đã tìm thấy gần đây StackOverflow, mà bạn có thể thấy, đầu vào trông giống như một số, ví dụ: "1.86"và nó chỉ chứa 4 ký tự đó nhưng lỗi vẫn tồn tại. Hãy nhớ rằng, người ta chỉ có thể phân tích cú pháp số nguyên với # Integer # parseInt #. Để phân tích cú pháp số thập phân, người ta nên sử dụng Double#parseDouble.

Xem thêm: Sự khác biệt giữa UMA và NUMA

Một tình huống khác là, khi số có nhiều chữ số. Nó có thể là, nó quá lớn hoặc quá nhỏ để phù hợp inthoặc long. Bạn có thể muốn thử new BigDecimal().

Quảng cáo. 4.

Cuối cùng, chúng tôi chấp thuận đồng ý rằng chúng tôi không hề tránh khỏi trường hợp khi người dùng nhập ” abc ” dưới dạng một chuỗi số. Tại sao ? Bởi vì anh ấy hoàn toàn có thể. Trong một trường hợp như mong muốn, đó là chính bới anh ta là một người thử nghiệm hoặc đơn thuần là một người đam mê. Trong trường hợp xấu, đó là kẻ tiến công .

Tôi có thể làm gì bây giờ? Vâng, Java cung cấp cho chúng tôi try-catchbạn có thể làm như sau:

try { i = Integer.parseInt(myString); } catch (NumberFormatException e) { e.printStackTrace(); //somehow workout the issue with an improper input. It's up to your business logic. }

Video liên quan

Chủ đề