2016-03-02 46 views
0

我开始学习Java,我有一个非常简单的任务要做,但我有一个问题线程“main”中的异常java.util.NoSuchElementException:找不到行,出了什么问题?

在Eclipse它的做工精细,但在IDEONE是错误:

Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1540) at 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();的其他程序中,它工作。

回答

1

在做之前tek.nextLine(),在你的循环,你需要检查是否有ScannernextToken

while (tek.hasNext()) 

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

+0

那么它应该是什么样子? 当我在我的代码中添加此行有一个错误...我不明白为什么在Eclipse中它工作完美,但在IDEONE没有... 感谢您的回复 – KubaIV

0

我认为它实际上不是你的代码使错误,但IDEONE。如果它在Eclipse中有效,那么我认为没有其他原因会阻止它在另一个IDE中工作,除非您正在使用不同的Java编译器。

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是整数? (如果用户输入“ - 5 x”,您将得到一个例外)

+0

我有任务,其中第一个tokken是数学符号,另一个2是整数,将执行1中所示的操作tokken;) – KubaIV

0

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

相关问题