2014-02-05 46 views
-2
import java.util.Scanner; 

public class CheckPassFail { 
    static char tr; 

    public static void main(String[] args){ 
     do{ 
      Scanner x = new Scanner(System.in); 
      double mark; 
      System.out.println("Enter a random number :"); 
      mark = x.nextDouble(); 
      double g = mark%2; 
      if(g==0) 
       System.out.println("BREAK EVEN"); 
      else 
       System.out.println("PRETTY ODD"); 
      System.out.println("You want to try another number?\nY = YES and N = NO"); 
      tr = x.next().charAt(0); 
     } 
     while(tr == 'Y'); 
    } 

} 
+2

什麼不行? –

+3

你有錯誤嗎?你需要在你的聲明中給出一個值。 static char tr ='Y'; – TroyAndAbed

+1

不要在標題中提供太多信息。嘗試解釋你的代碼。顯示您的輸入,輸出和您的預期。 –

回答

2

你可以嘗試做這樣的事情:

Scanner in = new Scanner(System.in); //Instantiate outside of loop. 
String str = ""; //Define and initialize before the loop as well to avoid a null pointer exception. 

do { 
    str = in.next(); 

} while (str.startsWith("Y")); 

此外,您應該實例化循環之外偵測對象。這樣你就不會在每次迭代中不必要地重新實例化一個全新的實例。

3

第一招:加toUpperCase()擺脫小寫字母(桑尼解釋相同的方式,Y.

tr = x.next().toUpperCase().charAt(0); 

第二個:你說你想循環,直到還有一個N.對於只需更換

while(tr == 'Y'); 

while(tr != 'N'); 

以外,你的代碼似乎做WH它應該。我測試了它,它應該工作。

1

去您可以使用while(tr != 'N');代替while(tr == 'Y');

相關問題