列出项目
使用从1到大小限制的随机整数填充数组
提示用户是否想要再做一次
您需要使用嵌套for循环为数组元素赋值并打印它们 //因此,数组中的值不会很大,将它们限制在由行数确定的范围内{
如果您使用Do循环启动方格,则可以在此处保留While条件以检查哨兵
**所以我能够做所有这些事情,除了让我做的工作!当它完成运行for语句时,它会询问我的print语句然后结束代码,甚至没有给我机会输入我的} while语句的输入。
已解决*******
答案 0 :(得分:0)
"它是因为当你输入一个数字然后按Enter键时,input.nextInt()仅消耗数字,而不是"行结束",原始数据类型如int ,double等不消耗"行结束",这是"行结束"保留在缓冲区中当input.next()执行时,它会消耗"行的结尾"来自第一个输入的缓冲区。这就是为什么,你的字符串句子= scanner.next()只包括"行的结尾",不等待从keyborad读取。"
因此,在输入数字并使用nextInt()
读取后,行尾字符仍保留在缓冲区中,当您调用nextLine()
时,它会读取此字符并返回。您应该readLine()
使用Integer.parseInt()
的所有输入。
答案 1 :(得分:0)
在循环的底部更改为answer = input.nextLine();
answer = input.next();
。您可以参考http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
答案 2 :(得分:0)
您可以将answer = input.nextLine();
块中的语句if
放在for
循环块之后的块中的最后一个语句,这样在更改语句位置后,您的代码将如下所示:
import java.util.Scanner;
public class SquareMakerCF{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String answer="";
do
{
System.out.print("Enter the number of rows/columns: ");
int rows = input.nextInt();
if (rows != 0)
{
int [][] matrix = new int[rows][rows];
for(int row = 0; row < matrix.length; row++)
{
for (int column = 0; column < matrix[row].length; column++)
{
matrix[row][column] = (int)(Math.random()*rows);
}
}
for(int row=0; row<matrix.length; row++)
{
for(int column = 0; column < matrix[row].length; column++)
{
System.out.print(matrix[row][column] + " ");
}
System.out.println();
}
// new statement postion
answer = input.nextLine();
}
else
{
System.out.print("Do not enter 0");
}
System.out.println("Do you want to do another? Enter yes or no: ");
}
while (answer.equalsIgnoreCase("yes"));
}
}