繁体   English   中英

java.util.Scanner 中的 NoSuchElementException

[英]NoSuchElementException in java.util.Scanner

此代码已成功编译,但它显示运行时错误和异常,因为扫描仪类中没有此类元素。 阅读测试用例后,它应该将输入作为字符串,但显示异常。

public class CandidateCode 
{
      public static void main(String args[] ) throws Exception
      {
            //Write code here
            Scanner sc=new Scanner(System.in);
            int testCase=sc.nextInt();
            while(testCase>0)
            {
                     //sc.next();
                     Scanner scan=new Scanner(System.in);
                     String temp="";
                     String res="";
                     for(int i=0;i<str.length();i++)
                     {
                        if(temp.indexOf(str.charAt(i))==-1)
                           temp=temp+str.charAt(i);
                        else
                        {
                           res=res+str.charAt(i);
                         }
                      }
                      char min='z';
                      for(int j=0;j<res.length();j++)
                      {
                         if(res.charAt(j)<min)
                            min=res.charAt(j);
                      }
                      System.out.println(min);
                      testCase++;
              }
      }
  }

编译日志错误是:

线程“main”中的异常 java.util.NoSuchElementException
在 java.util.Scanner.throwFor(Scanner.java:862)
在 java.util.Scanner.next(Scanner.java:1371)
在 CandidateCode.main(CandidateCode.java:19)

如果您在到达数据流末尾时尝试读取数据,则会从Scanner.next()抛出NoSuchElementException

代替:

sc.next();
...

用:

while(! sc.hasNext()) { }
sc.next();
...

Scanner.hasNext()检查是否还有更多数据要读取,while 循环会等待直到有更多数据要读取才继续。

NoSuchElementException将被抛出,因为您试图从数据到达的输入(扫描仪)读取数据到最后。

您必须通过检查hasNext()是真还是假来读取输入( Scanner )

只需在程序结束时或再次使用之前执行scanner.clear()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM