Double Arrays,Do While Loop

时间:2014-05-08 04:17:17

标签: java

  • 列出项目

  • 使用从1到大小限制的随机整数填充数组

  • 提示用户是否想要再做一次

  • 您需要使用嵌套for循环为数组元素赋值并打印它们 //因此,数组中的值不会很大,将它们限制在由行数确定的范围内{

  • 如果您使用Do循环启动方格,则可以在此处保留While条件以检查哨兵

**所以我能够做所有这些事情,除了让我做的工作!当它完成运行for语句时,它会询问我的print语句然后结束代码,甚至没有给我机会输入我的} while语句的输入。

已解决*******

3 个答案:

答案 0 :(得分:0)

从这篇文章Using scanner.nextLine()

开始

"它是因为当你输入一个数字然后按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"));


}
}