2011-12-09 8 views
0

私は "Javaのプログラミング方法"という本を使用して、Javaを学んでいます。私は演習を解決しています。この実際の演習では、ユーザーから整数を読み込むプログラムを作成することになっています。プログラムは、ユーザーから読み取った整数に対応する四角形のアスタリスク(*)を表示する必要があります。 F.eksのユーザーが整数3を入力し、その後、プログラムは表示が必要です。"While-loop"が正しく動作しない

*** 
*** 
*** 

私は巣に別の内部while文を試し、1行にアスタリスクを繰り返す最初のものは、他の一つは、これを繰り返します適切な時間。残念ながら、私はプログラムを1行表示するだけです。誰か私が間違ってやっていることを教えてもらえますか?次のように コードは次のとおりです。

import java.util.Scanner; 
public class Oppgave618 
{ 

    public static void main(String[] args) 
    { 
    int numberOfSquares; 
    Scanner input = new Scanner(System.in); 
    System.out.print("Type number of asterixes to make the square: "); 
    numberOfSquares = input.nextInt(); 

     int count1 = 1; 
    int count2 = 1; 

    while (count2 <= numberOfSquares) 

     { 
     while (count1 <= numberOfSquares) 
      { 
      System.out.print("*"); 
      count1++; 
      } 
     System.out.println(); 
     count2++; 
     } 

    } 

} 

答えて

5

あなたは

public static void main(String[] args) { 
    int numberOfSquares; 
    Scanner input = new Scanner(System.in); 
    System.out.print("Type number of asterixes to make the square: "); 
    numberOfSquares = input.nextInt(); 
      //omitted declaration of count1 here 
    int count2 = 1; 
    while (count2 <= numberOfSquares) { 
     int count1 = 1; //declaring and resetting count1 here 
     while (count1 <= numberOfSquares) { 
      System.out.print("*"); 
      count1++; 
     } 
     System.out.println(); 
     count2++; 
    } 
} 
+0

ありがとうございました!それはそれを解決しました:-) – user820913

+0

あなたは大歓迎です。 Javaで幸運! – amit

1

count1外側のループの各反復でバックcount1をリセットする必要があり、例えば、あなたが次の行に移動するたびにリセットする必要があります

while (count2 <= numberOfSquares) 
{ 
    while (count1 <= numberOfSquares) 
    { 
     System.out.print("*"); 
     count1++; 
    } 
    System.out.println(); 
    count1 = 1; //set count1 back to 1 
    count2++; 
} 
1

運動はしばらくループを必要としない限り、あなたは本当にforループを使用する必要があります。実際にこのようなバグが発生するのを防ぎ、必要なコードが少なくなります。また、それはゼロからカウントを開始し、ループを終了させるというよりも、<=<を使用するほとんどのプログラミング言語で慣用的である:

for (int count2 = 0; count2 < numberOfSquares; ++count2) 
{ 
    for (int count1 = 0; count1 < numberOfSquares; ++count1) 
     System.out.print("*"); 
    System.out.println(); 
} 
+0

ありがとう、それは良い点です! – user820913

関連する問題