2010-12-01 131 views
0

我是編程新手,所以認爲我是一個偉大的新手。 困境: 我想每次回答「是」時重複我的代碼。 我確實使用了「do while循環」,因爲語句首先出現,布爾條件最後應該被評估。JavaSE中循環的問題

代碼:

import java.util.Scanner; 

class whysoserious { 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 

     do{ 
     String go = YES; 

     int setone = 0; 
     int settwo = 0; 

     System.out.println("Enter two numbers: "); 

     setone = sc.nextInt(); 
     settwo = sc.nextInt(); 
     int set = setone + settwo; 


     System.out.println("What is " +setone+ " + " +settwo+ " ? "); 
     int putone = 0; 
     putone = sc.nextInt(); 

     if (putone == set) 
      System.out.println("Correct!"); 

     else 
      System.out.println("Wrong Answer - The correct answer is: "+set+""); 

     System.out.println("Continue?"); 
     cont = sc.nextLine(); 
     } while (cont == go); 
    } 
} 

我被要求增加CMD-提示行。

  • C:\測試>的javac whysoserious.java whysoserious.java:15:找不到 符號符號:可變YES 位置:類whysoserious 字符串去= YES; ^ whysoserious.java:38:找不到 符號符號:變量cont 位置:class whysoserious cont = sc.nextLine(); ^ whysoserious.java:39:找不到 符號符號:變量cont 位置:class whysoserious } while(cont == go); ^ whysoserious.java:39:找不到 符號符號:變量去 位置:class whysoserious } while(cont == go); ^ 4個錯誤

我每次嘗試編譯它時都會收到一個錯誤。這背後的知識是,我想每當用戶輸入Yes或No時繼續重複代碼。注意到代碼沒有do {。在這一點上,我一直堅持這樣做。

+0

請給我們的錯誤。錯誤不僅僅是混亂你的屏幕,他們是爲了解決問題。 :) – Teekin 2010-12-01 17:53:10

+2

請修復格式。 – 2010-12-01 17:57:38

+1

如果沒有這個,你的代碼就可以正常工作,但Java風格指南指出類應該以大寫字母開頭,類,變量和方法都應該是駱駝式的。所以你的班級應該被命名爲「WhySoSerious」。 – Jonathan 2010-12-01 19:09:15

回答

7

多個問題:

  • 你永遠不聲明或cont所以YES編譯器不知道他們是什麼

  • 聲明go內環路,因此其在while超出範圍表達式

  • 比較字符串與==沒有做你在這裏需要的 - 你可能有兩個diffe租用具有相同內容的字符串。改爲使用equals

來自編譯器的錯誤消息應該告訴你前兩個問題 - 注意編譯器的說法。

最簡單的解決:do前加String cont;,擺脫go,使測試while ("YES".equals(cont));這仍然會退出,如果用戶輸入「是」或「Y」或「YES」或其他一些變化,但是。

3

行:

String go = YES; 

應改爲:

String go = "YES"; 

否則,編譯器會認爲是一些變量,它不知道,並繼續焦慮不安。

1

添加到@Ronnie Howell陳述的內容中...使用equals()方法進行字符串相等。

while (cont == go); 

應該讀...

while (cont.equals(go)); 

PS ...我沒有看到你所定義cont。請在do循環之外聲明它。

0

以下工作:

import java.util.Scanner; 

public class WhySoSerious { 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     String cont; 
     String go = "YES"; 

     do { 

      System.out.println("Enter two numbers: "); 

      int setone = sc.nextInt(); 
      int settwo = sc.nextInt(); 
      int set = setone + settwo; 


      System.out.println("What is " + setone + " + " + settwo + " ? "); 
      int putone = sc.nextInt(); 

      if (putone == set) 
       System.out.println("Correct!"); 
      else 
       System.out.println("Wrong Answer - The correct answer is: " + set + ""); 
      System.out.println("Continue?"); 
      cont = sc.next(); 
     } while (cont.equalsIgnoreCase(go)); 
    } 
}