2017-10-17 8 views
0

私のプログラムでは、2〜10の間の行を受け入れるプログラムを作成します。n行の乗算三角形を作成します。各行には行サイズまでのエントリが含まれます。これは私には問題ありません。しかし、ユーザーが "印刷したい行の数を入力してください:"という質問に数字0を入力した後、ループを終了して「このプログラムを使用していただきありがとうございます!私はDO ... WHILEループを使用して、ユーザーが継続したいかどうかを判断しました。私のループでは、ユーザーがint numとして印刷したい数値を宣言しました。 num> = 1の間、私のループは続くはずです。しかし、私はラインでエラーメッセージを受信し続けます(num> = 1)。それはシンボルを見つけることができないと言っている。それはなぜそれを言っているのですか?事前にありがとうDo whileループはループ内で入力された変数を読み込みません

import java.io.*; 
import java.util.*; 
public class Prog166g 
{ //begin testshell 
public static void main (String[] args) 
{ //begin main 
int i; 
    int outer; 
    int inner; 
    int result; 
    int example = 4; 
    System.out.print("Number of rows for this triangle : " + example +"\n"); 
    for (i = 1; i <= example; i++) { 
     System.out.printf("%5s", i); 
    } 
    System.out.println(""); 
    for (outer = 1; outer <= 4; outer++) { 
     for (inner = 1; inner <= outer; inner++) { 
      result = outer * inner; 
      System.out.printf("%5s", result); 
     } 
     System.out.println(""); 
    } 
    System.out.println(""); 

     do{ 
     System.out.print("Please enter the number of rows you would like to print: "); 
     Scanner kbReader = new Scanner(System.in); 
     int num = kbReader.nextInt(); 
     System.out.println(""); 
     System.out.println("Number of rows for this triangle: " + num); 
     for (i = 1; i <= num; i++) { 
      System.out.printf("%5s", i); 
     } 
     System.out.println(""); 
     for (outer = 1; outer <= num; outer++) { 
      for (inner = 1; inner <= outer; inner++) { 
       result = outer * inner; 
       System.out.printf("%5s", result); 
      } 
     } 
    }while (num>=1); 


    System.out.println("Thank you for using this program"); 
}// ends main 
}//ends testshell 
+0

'while'ループのスコープ(' num'を使用しているところ)が 'do'ループの外側にあるので、' num num 'シンボルを見つけることができません。あなたは 'num'を宣言します)。 'do {}'の開始前に 'int num;'を宣言し、エラーをクリアする必要があります。 – davedwards

答えて

2

「num」の宣言は、「do」の前にする必要があります。

... 
int num; 
do { 
    ... 
    num = kbReader.nextInt(); 
    ...; 
} 
... 
+0

ああ私は理解する。ありがとうございました –

1

num変数が範囲外です。ループの上のどこかに宣言するだけです。

int example = 4; 
int num; //Declare num here 
System.out.print("Number of rows for this triangle : " + example +"\n"); 
for (i = 1; i <= example; i++) { 
    System.out.printf("%5s", i); 
} 
System.out.println(""); 
for (outer = 1; outer <= 4; outer++) { 
    for (inner = 1; inner <= outer; inner++) { 
     result = outer * inner; 
     System.out.printf("%5s", result); 
    } 
    System.out.println(""); 
} 
System.out.println(""); 

    do{ 
    System.out.print("Please enter the number of rows you would like to print: "); 
    Scanner kbReader = new Scanner(System.in); 
    num = kbReader.nextInt(); 
    System.out.println(""); 
    System.out.println("Number of rows for this triangle: " + num); 
    for (i = 1; i <= num; i++) { 
     System.out.printf("%5s", i); 
    } 
    System.out.println(""); 
    for (outer = 1; outer <= num; outer++) { 
     for (inner = 1; inner <= outer; inner++) { 
      result = outer * inner; 
      System.out.printf("%5s", result); 
     } 
    } 
}while (num>=1); 


    System.out.println("Thank you for using this program"); 
}// ends main 
}//ends testshell 
関連する問題