我一直在试图弄清楚如何执行此代码,但无法弄清楚如何更改当前代码的工作方式。
问题是:
编写程序以从输入文件名“input5_01.txt”读取整数N(2 <= N <= 30),然后编写函数以创建具有来自范围的随机整数的N×N矩阵[ 10,99]。将矩阵输出到 输出文件名“output5_01.txt”
目前,这是我的代码:
public static final int UPPER = 99, LOWER = 10;
public static void main(String[] args) throws FileNotFoundException {
int n = 5;
int[][] arr = new int[n][n];
Scanner inputFile = new Scanner(new File("input5_01.txt"));
//read in an int (n) from input file
while (inputFile.hasNext()) {
if (inputFile.hasNextInt() >= 2 && inputFile.hasNextInt() <= 30) {
n = inputFile.nextInt();
} else {
inputFile.next();
}
}
//assigning random numbers to array
Random rand = new Random();
for (int r = 0; r < arr.length; r++) {
for (int c = 0; c < arr[0].length; c++) {
arr[r][c] = rand.nextInt(UPPER - LOWER + 1) + LOWER;
}
System.out.println();
}
}
真的,我唯一的问题是:
if(inputFile.hasNextInt() >= 2 && inputFile.hasNextInt() <= 30)
我可以做些什么来完成这项工作?
答案 0 :(得分:0)
根据JavaDoc,hasNextInt()
返回一个布尔值,表示流中是否有另一个整数值,它不返回下一个整数的值。因此,本节:
while(inputFile.hasNext()){
if(inputFile.hasNextInt() >= 2 && inputFile.hasNextInt() <= 30)
n = inputFile.nextInt();
else
inputFile.next();
}
需要阅读类似的内容:
int nextInt = -1;
boolean intFound = false;
while(inputFile.hasNext()){
if(inputFile.hasNextInt()) {
nextInt = inputFile.nextInt();
if((nextInt >= 2) && (nextInt <= 30) {
intFound = true;
break;
}
}
}
if(intFound) {
... //Populate your matrix according to the value of nextInt
}
答案 1 :(得分:0)
如果您的输入文件只有ints
,那么我相信这也应该有效:
while(inputFile.hasNextInt()){
int nextIntValue = inputFile.nextInt();
if(nextIntValue >= 2 && nextIntValue <= 30) {
n = nextIntValue ; break;
}
else
inputFile.next();
}
它还可以避免不必要的电话。