线程“main”中的异常java.util.NoSuchElementException:找不到行,有什么问题?

时间:2016-03-02 18:16:01

标签: java

我开始学习JAVA,我有一个非常简单的任务要做,但我有一个问题

在Eclipse中,它工作正常,但在IDEONE中是错误的:

  

线程“main”中的异常java.util.NoSuchElementException:找不到行    在java.util.Scanner.nextLine(Scanner.java:1540)    在Main.main(Main.java:9)

有我的代码:

    Scanner tek=new Scanner(System.in);
    String t2=tek.nextLine();
    int t=Integer.parseInt(t2);
    int tablica1[]= new int[t];
    if(t>=1 && t<=100)
    {
        for(int i=0; i<t; i++)
        {
            String ciag=tek.nextLine();
            String tablica[]=ciag.split(" ");
            int x=Integer.parseInt(tablica[1]);
            int y=Integer.parseInt(tablica[2]);
            if(tablica[0].equals("+"))
            {
                tablica1[i]=x+y;
            } else if(tablica[0].equals("-"))
            {
                tablica1[i]=x-y;
            } else if(tablica[0].equals("*"))
            {
                tablica1[i]=x*y;
            } else if(tablica[0].equals("/"))
            {
                tablica1[i]=x/y;
            } else if(tablica[0].equals("%"))
            {
                tablica1[i]=x%y;
            }
        }
        for(int i=0; i<t; i++)
        {
            System.out.println(tablica1[i]);
        }
    }

我知道我可以宣布

int t=tek.nextInt();在开始时但是当我这样做时,我有更多错误; p

你能告诉我,我的代码有什么问题吗?

你能逐步解释一下吗?

我在2个程序中遇到同样的错误;在其他程序中,我在for循环之前声明tek.nextLine();并且它有效。

4 个答案:

答案 0 :(得分:1)

在执行tek.nextLine()之前,在for循环中,您需要检查Scanner是否有nextToken

while (tek.hasNext())

检查https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

答案 1 :(得分:0)

我建议实际上你的代码实际上不是错误,而是IDEONE。如果它在Eclipse中工作,我没有其他理由可以阻止它在另一个IDE中工作,除非你当然使用不同的Java编译器。

答案 2 :(得分:0)

    String ciag=tek.nextLine();
    String tablica[]=ciag.split(" ");
    int x=Integer.parseInt(tablica[1]);
    int y=Integer.parseInt(tablica[2]);

你怎么知道ciag中有3个令牌?你怎么知道输入1和2是整数? (如果用户输入&#34; - 5 x&#34;)

,您将获得例外

答案 3 :(得分:0)

您可以尝试使用命令提示符运行此代码吗?看看你得到了什么错误。 IDE不会产生任何错误。