[英]Printing an array in a while loop
我试图在用户输入 y 或 Y 时使用一次方法调用打印我的数组。我不知道如何让数组只打印一次。
我已经研究并尝试调整我自己的代码,但我迷路了。
public class Lab10p1 {
public static final int ROW = 5;
public static final int COL = 6;
public static final int MIN = 0;
public static final int MAX = 100;
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
System.out.println("Do you want to start Y/N?");
char c =scan.next().charAt(0);
while(c=='y'||c=='Y')
{
int[][] a = new int[ROW][COL];
randArray(a, ROW, COL, MIN, MAX);
}
}
public static void randArray(int[][] matrix, int row, int col, int low, int up)
{
Random rand = new Random();
for (int r = 0; r < row; r++)
{
for (int c = 0; c < col; c++)
{
int are=matrix[r][c] = rand.nextInt(up - low + 1) + low;
System.out.print(" "+are);
}
System.out.println();
}
}
预期的输出是
你想继续吗(是/否):是
数组元素为:
12 31 12 21 45 23
32 12 67 54 35 67
34 54 33 34 53 34
23 34 43 23 45 78
23 54 89 76 54 34
实际结果是无限循环打印6x5数组
您应该使用if
而不是while
。 如果用户输入Y
或y
,则循环将永远不会完成,因为c
在循环内从未设置为Y
或y
任何其他值,因此循环条件始终为真。
如果您想在每个打印的数组之后再次询问用户,您必须将问题包含在循环中,但在这种情况下,我更喜欢do while
循环。
一旦你打印了array
。 提示用户再次输入字符,因此如果他/她再次输入 Y,则再次打印数组,例如:
while(c=='y'||c=='Y')
{
int[][] a = new int[ROW][COL];
randArray(a, ROW, COL, MIN, MAX);
System.out.println("Do you want to start Again Y/N?");
c = scan.next().charAt(0);
}
或者,如果您希望程序只运行一次,则将while
替换为if
。
这是因为您只输入了 'c' 的值一次并不断迭代它,现在它进入无限循环,因为 'c' 的值根本没有改变。
char c =scan.next().charAt(0);
int[][] a;
while(c=='y'||c=='Y')
{
a = new int[ROW][COL];
randArray(a, ROW, COL, MIN, MAX);
c =scan.next().charAt(0);
}
此外,您不必每次都重新声明二维数组。
两种方式
if(c=='y'||c=='Y')
{
int[][] a = new int[ROW][COL];
randArray(a, ROW, COL, MIN, MAX);
}
或者
while(c=='y'||c=='Y')
{
int[][] a = new int[ROW][COL];
randArray(a, ROW, COL, MIN, MAX);
break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.