我是编码的新手,正在为数组创建一个条件,但是由于某种原因我设置的while循环条件会在不应该的时候更改数组。如果这是显而易见的事情,我很抱歉,但我似乎无法在这里找到适用于我的问题的问题。
代码:
import java.util.Scanner;
//================================================================
public class ArrayIrreg {
//----------------------------------------------------------------
private static Scanner Keyboard = new Scanner(System.in);
public static void main(String[] args) {
//----------------------------------------------------------------
char group, rLetter;
int num = 10; // for test
int rows = 10;
int columns = 8;
// creating 2d array
System.out.print("Please enter number of rows : ");
rows = Keyboard.nextInt();
while (rows < 0 || rows >= 10) {
System.out.print("ERROR:Out of range, try again : ");
rows = Keyboard.nextInt();
}
double[][] figures = new double[rows + 1][num];
for(int t = 0; t < rows; t++) {
rLetter = (char)((t)+(int)'A');
System.out.print("Please enter number of positions in row " + rLetter + " : ");
columns = Keyboard.nextInt();
while(columns < 0 || columns >= 8) {
System.out.print("ERROR:Out of range, try again : ");
columns = Keyboard.nextInt();
}
for(int j = 0; j <= columns; j++) {
figures[j] = new double[j] ;
}
}
// filling the array
for(int row = 0; row < figures.length; ++row) {
for(int col = 0; col < figures[row].length; ++col) {
figures[row][col] = 0.0;
}
}
// printing the array
for(int row = 0; row < figures.length; ++row) {
// printing data row
group = (char)((row)+(int)'A');
System.out.print(group + " : ");
for(int col = 0; col < figures[row].length; ++col) {
System.out.print(figures[row][col] + " ");
System.out.print(" ");
}
System.out.println();
}
// printing final border
for(int col = 0; col < figures[0].length; ++col) {
System.out.print("-+");
}
System.out.println(" ");
}
}
在while循环保持的条件下,第一次输入值时,它会正确显示,但是一旦输入while循环并且值被更正,代码将返回不同的错误或显示错误的数量。 / p>
我不确定为什么会导致结果发生变化,因为如果初始输入超出预期范围,则while循环用于强制输入新值。
答案 0 :(得分:1)
您需要在每个Keyboard.nextLine()
之后致电Keyboard.nextInt()
。
说明:扫描程序调用nextInt()后,它获取第一个值,并将其余字符串保留为\n
。然后我们使用nextLine()
消耗字符串的其余部分。