我必须得到一个整数文本文件,并输出最大值和最小值,使用try-catch块捕捉错误。我知道这和while循环附近的文件名扫描器有关。
int currentVal;
boolean value = true;
int max = 0;
int min = 0;
Scanner input = new Scanner(System.in);
try {
System.out.print("Enter the file name:");
String fileName = input.next();
}catch(FileNotFoundException e) {
System.out.println("Error occured");
e.printStackTrace();
}
Scanner readFile = new Scanner(new File(fileName));
while (readFile.hasNext()) {
currentVal = readFile.nextInt();
if(readFile.hasNextInt()) {
max = currentVal;
min = currentVal;
} else {
max = Math.max(max, currentVal);
min = Math.min(min, currentVal);
}
System.out.println("Maximum and Minimums will be printed");
System.out.println("Maximum: " + max);
}
}}```
2条答案
按热度按时间6mw9ycah1#
我认为缺陷存在于以下if块中:
为什么需要一直更新max&min?
您应该更新比较逻辑,如下所示:
并在循环前用max=integer.min\u值和min=integer.max\u值初始化max和min
pbpqsu0x2#
所以这里有两个问题,一个是try/catch的位置,另一个是可变范围。我不是说你的计算中有任何逻辑错误,如果它们存在的话。只是想帮助程序运行。
你现在有
这里有两个问题:
try块中的两个语句不存在期望的异常,因此不会处理可能引发异常的位置。
String filename
,因为它存在于try块中,所以对它后面的代码不可见(try块之外)那该怎么办呢?
你对试抓块的想法是对的,只是找错地方了!当你试图打开文件时,你需要它。
确保
String filename
在需要使用的地方是可见的