2015-10-18 176 views
-5

enter image description here生命宇宙萬物

我是新來CodeChef和我得到以下輸出作爲CodeChef錯誤(編碼的在線平臺)的編輯,我無法提交我的代碼。

我想問

1)是我對這個問題的權利和途徑

2)當這個錯誤來?

3)爲什麼我得到編譯錯誤?

MyApproach:

import java.util.Scanner; 
class Prog1 { 
    public static void main(String[] args) throws java.lang.Exception { 
     int a = 0; 
     Scanner sc = new Scanner(System. in); 
     int t = 1; 
     while (t != 0) { 
      a = sc.nextInt(); 
      if (a != 42) System.out.println(a); 
      else t = 0; 
     } 
    } 
} 

以我Eclipse編輯器輸出是示出:

但我得到以下異常對Codechef編者:在java.util.Scanner.throwFor(Scanner.java:862)

異常線程 「main」 java.util.NoSuchElementException
是java .util.Scanner.next在(Scanner.java:1485)
在java.util.Scanner.nextInt(Scanner.java:2117)
在java.util.Scanner.nextInt(Scanner.java:2076)
Prog1.main(Main.java:15)

Thankx in advance

+0

如果它在你的Eclipse上工作,爲什麼要麻煩?聯繫CodeChef,看看他們的編輯器出了什麼問題,如果你想的話。順便說一句,你的代碼很好。沒有理由改變它。 –

+0

@YassinHajaj是的,你是對的但我仍然可以在理解上犯錯誤。 –

+0

@YassinHajaj你知道嗎爲什麼這個帖子有負面投票。我解釋了我所做的一切,並編寫了自己的代碼 –

回答

-1

您缺少if語句的括號。

while(t!=0) 

    { 

    a=sc.nextInt(); 

    if (a != 42) { 
     System.out.println(a); 
    } 
    else { 
     t=0; 
    } 
    } 

但是達到時,則不會打印42,你就需要重新添加系統打印呼籲時,不等於42:

if (a != 42) { 
     System.out.println(a); 
    } 
    else { 
     System.out.println(a); 
     t=0; 
    } 
+0

不,它沒有括號就可以正常工作。 –

0

我猜測,這個問題是你的Scanner正試圖讀取文本時不存在。嘗試啓動掃描儀的hasNextInt()方法:

int a = 0; 
Scanner sc = new Scanner(System.in); 
boolean t = false; 
while (!t) { 
    if (sc.hasNextInt()) { 
     a = sc.nextInt(); 
     if (a != 42) 
      System.out.println(a); 
     else 
      t = true; 
    } 
} 

此外,你應該使用boolean而不是int(用於t)。