2013-02-06 173 views
-1

我的while循環出現問題。該程序詢問用戶的名字,並在用戶輸入之後,程序會詢問你打印輸入的次數。Do-while循環不起作用

我一直停留在我的while循環相當一個時間只能做,如果我這樣做它的工作:} while (antal > some random number)

package uppg2; 

import java.util.Scanner; 

public class Uppg2 { 

    public static void main(String[] args) { 

     Scanner name = new Scanner(System.in); 
     Scanner ant = new Scanner(System.in); 
     int antal; 
     String namn; 
     System.out.print("Whats your name?: "); 
     namn = name.nextLine(); 

     System.out.print("How many times u wanna print ur name?: "); 
     antal = ant.nextInt(); 
     do { 

      System.out.print(namn); 

     } while (????); 
     antal++; 
     namn = null; 
     antal = 0; 
    } 
} 
+2

for循環出了什麼問題? 'for(int i = 0; i

+0

它是否必須是do-while,for循環會更容易,while循環會更安全'do-while' ... – MadProgrammer

+1

@MadProgrammer我假設作業問題需要它是一個while while循環。 –

回答

2

這將是一個for循環的用例,就像其他人建議的那樣。但是當你堅持使用while循環:

int counter = 0; // a variable which counts how often the while loop has run 

do { 
    System.out.print(namn); // do what you want to do 
    counter++     // increase the counter 
} while (counter < antal)  // check if the desired number of iterations is reached 

當你不再當循環結束需要的antal值,你也可以不用計數器變量,只是減少安塔爾的每一個迴路和檢查它是否已經達到0.1

do { 
    System.out.print(namn); 
    antal--; 
} while (antal > 0) 
+1

是的,事情是我的老師告訴我要使用do-while,而且由於即時從遠處學習,我沒有真正的任何同學要求解決方案,所以我來找你們:P – Krappington

0

下面是一個類似的問題的解決方案。看看你能不能把它翻譯成你的問題:

// How many times to I want to do something? 
int max = 40; 
for (int i = 0; i < max; i++) { 
    // Do something! 
} 
3

我個人會用一個for循環,像這樣:

for(int i = 0 ; i < antal; i++){ 
    System.out.println(namn); 
} 
+2

antal是一個int ...不需要parseInt就可以了。 – TofuBeer

+0

你是對的,我沒有注意到。我認爲它是一個字符串。 –

2

你可以指望antal下(antal--)直到1。不當然,如果可以銷燬antal中的值也是可以的。

1
package uppg2; 

import java.util.Scanner; 

public class Uppg2 { 

public static void main(String[] args) { 

    final Scanner in = new Scanner(System.in); 
    int antal; 
    String namn; 
    System.out.print("Whats your name?: "); 
    namn = in.nextLine(); 

    System.out.print("How many times u wanna print ur name?: "); 
    antal = in.nextInt(); 
    int i = 0; 
    while(i < antal){ 

      System.out.print(namn); 
      i++; 

    } 
    in.close(); 
} 
} 

告訴我,如果可行。基本上,你需要一個增量計數器來確保它只打印出所需的時間。由於我們從0開始計數,所以我們不需要確保它一直等到打印時間,但它仍然處於打印時間之下。

1

你就必須有一個是你的do-while循環的內部增加一個計數器,並針對該值進行比較,你

它會使你的循環迴路的東西如:

antal = ant.nextInt(); 
int i = 0; 
do{ 

      System.out.print(namn); 
      i++; 

    }while (i < antal); 

注意,因爲它是一個do-while循環,你將永遠打印的名字至少一次,即使用戶輸入爲零。爲了防止這種情況發生,您需要使用for或while循環,如其他答案所述,或者使用圍繞System.out.println調用的if條件來檢查antal是否爲零。

此外,如果您不在乎最終的產品是什麼,您可以使用TofuBeer的解決方案。

+0

+1我認爲這個OP應該尋找什麼。 – Smit