2017-10-17 137 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