Java 为什么我会有数字形式异常?
我在CodeChef平台上做了一个问题,代码在我的IDE中执行得很好,而不是在CodeChef平台上 当我用扫描器代替缓冲读卡器时,情况也是如此,我得到的是NoTouchElementExceptionJava 为什么我会有数字形式异常?,java,bufferedreader,numberformatexception,parseint,stringtokenizer,Java,Bufferedreader,Numberformatexception,Parseint,Stringtokenizer,我在CodeChef平台上做了一个问题,代码在我的IDE中执行得很好,而不是在CodeChef平台上 当我用扫描器代替缓冲读卡器时,情况也是如此,我得到的是NoTouchElementException Exception in thread "main" java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Integer.java:542) at java.lang.Integer.parseI
Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.parseInt(Integer.java:615)
at Codechef.main(Main.java:13)
以下是问题的链接:
/*包编解码器;//不要放置包名*/
导入java.util.*;
导入java.lang.*;
导入java.io.*;
/*只有当类是公共的时,类的名称才必须是“Main”*/
类Codechef
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
int T=Integer.parseInt(br.readLine());
而(T>0)
{
StringTokenizer st=新的StringTokenizer(br.readLine());
int N=Integer.parseInt(st.nextToken());
int C=Integer.parseInt(st.nextToken());
int L[]=新的int[N];
int B[]=新的int[N];
int c[]=新的int[N];
int maxL=0,maxB=0;
对于(int i=0;i如果我能数到第13行(在这里发布的代码中总是不稳定),您的异常来自这一行:
int T = Integer.parseInt(br.readLine());
br.readLine()
在没有更多输入时返回null
。由于这是您第一次调用readLine()
,这意味着您的输入是空的。异常消息中的null
表示将null
传递给parseInt
(或字符串“null”)
,但这不太可能)
此错误解释也与您从扫描仪
报告的无接触异常
一致
提示:我知道您的变量来自一个问题语句,它使用了大写的T
、N
、C
、L
和B
。在Java中,让Java命名约定获胜:变量使用小写。因此T
或capitalAlt
。变量名T
尤其重要使用因为T
在泛型中经常用作类型参数。您从控制台提供的输入是什么?CodeChef使用问题中的一组测试输入进行计算。感谢您的提示。下次我将使用命名约定win。因此,我猜提供的测试输入有问题,或者不应该有问题这是一个错误。
int T = Integer.parseInt(br.readLine());