当前位置:  开发笔记 > 编程语言 > 正文

在java中使用scanner类输入

如何解决《在java中使用scanner类输入》经验,为你挑选了1个好方法。

我正在制作一个程序,将给定的整数减少到最简单的比例.但是在程序的子方法中通过Scanner类获取输入时发生错误.这是代码:

package CodeMania;

import java.util.Scanner;

public class Question5 
{
public static void main(String args[])
{
    Scanner sc=new Scanner(System.in);
    int T=sc.nextInt();// number of test cases
    sc.close();
    if(T<1)
    {
        System.out.println("Out of range");
        System.exit(0);
    }
    for(int i=0;i500)||(N<1))
    {
        System.out.println("Out of range");
        System.exit(0);
    }
    int a[]=new int[N];
    for(int i=0;i 0)
    {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}
}

错误是 -

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at CodeMania.Question5.ratio(Question5.java:26)
    at CodeMania.Question5.main(Question5.java:19)

这里我在主函数中使用了2个单独的扫描仪对象sc,在比率函数中使用了sc1来从控制台获取输入.但是,如果我声明在类范围的公开静态型扫描仪的对象,然后使用整个程序只有一个扫描对象采取输入,则程序工作的要求没有错误.

为什么会发生这种情况......?



1> 小智..:

出现此错误的原因是在扫描程序上调用.close()也会关闭inputStream System.in,但实例化新的Scanner不会重新打开它.

您需要在方法参数中传递单个扫描程序,或使其成为静态全局变量.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有