2016-03-02 44 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不會產生任何錯誤。

相關問題