2017-10-17 119 views
0

對於我的程序,我要編寫一個程序,它接受2到10之間的行數。生成一個n行的乘法三角形。每行包含直到其行大小的條目。這我沒有問題。但是,在用戶輸入數字0到我的問題「請輸入您想要打印的行數:」它應該終止循環並打印「謝謝您使用此程序!」我使用了一個DO ... WHILE循環來確定用戶是否希望繼續。在我的循環中,我宣佈用戶想要打印的數字爲int num。並且只要num> = 1,我的循環應該繼續。但是,我一直在接收一條錯誤消息(num> = 1)。說它找不到符號。爲什麼這麼說?預先感謝您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

這是說它無法找到符號'num',因爲'while'循環的範圍(您使用'num'的地方)在'do'循環之外(其中你聲明'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