在java中从输入文本文件中查找最大值
我正在尝试获取用户输入的某个文本文件中的最大数字。我还把它分为不同的方法。以下是我到目前为止的情况:在java中从输入文本文件中查找最大值,java,Java,我正在尝试获取用户输入的某个文本文件中的最大数字。我还把它分为不同的方法。以下是我到目前为止的情况: public static void FindMax(String file)throws IOException{ int maximum = 0; Scanner fileScanner = new Scanner(new File(file)); { int big = fileScanner.nextInt(); while (fi
public static void FindMax(String file)throws IOException{
int maximum = 0;
Scanner fileScanner = new Scanner(new File(file)); {
int big = fileScanner.nextInt();
while (fileScanner.hasNextInt()) {
int num = fileScanner.nextInt();
if(num > big) {
maximum++;
System.out.println(num);;
}
}
}
}
public static void main(String[] args)throws IOException{
Scanner keyboard = new Scanner(System.in);
String file;
System.out.print("Enter file: ");
file = keyboard.nextLine();
FindMax(file);
}
输出将打印文本文件中除第一个值以外的所有内容,而不是打印最大值。例如,如果文本文件为:
1
2
3
4
5
它只打印2,3,4和5,我不知道为什么。我如何才能得到最大值?我感谢你的帮助/建议。提前谢谢
编辑:你们都在说类似的解决方案,但当我尝试它们时,它只是打印出相同的输出。我很困惑。每当你得到any
num
大于big
时,你就应该用'num'更新big
。像这样-
while (fileScanner.hasNextInt()) {
int num = fileScanner.nextInt();
if(num > big) {
big = num;
}
}
然后在完成循环后,您将获得最大值。只需打印大的
-
System.out.println(big);
虽然你的代码中有很多错误。我想你问的问题是为什么要打印多个数字
只需输入
System.out.println(num)代码>此行位于while循环之外。并修复其他错误以使其正常工作。您的代码实际上没有找到最大值,而是打印出每一个大于读取的第一个数字的数字。请注意,您从未为big
指定新值。另外,maximum
纯粹是跟踪大于big
(文件中的第一个数字)的数字
这应该做到:
while (fileScanner.hasNextInt()) {
int num = fileScanner.nextInt();
if (num > big)
big = num;
}
您要做的是在while循环中:
if(num > big) {
big = num;
}
然后,当完成while循环时,只需打印大的:
System.out.println(大)
您不需要这个最大值,因为您没有将它用于任何用途,但是如果您应该首先修复语法错误(错误放置和缺少括号),或者您没有正确复制代码
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class FindMax {
public static void findMax(String file) throws IOException {
Scanner fileScanner = new Scanner(new File(file));
int max = fileScanner.nextInt();
while (fileScanner.hasNextInt()) {
int num = fileScanner.nextInt();
if (num > max) {
max=num;
}
}
System.out.println(max);
fileScanner.close();
}
public static void main(String[] args) throws IOException {
Scanner keyboard = new Scanner(System.in);
String file;
System.out.print("Enter file: ");
file = keyboard.nextLine();
findMax(file);
keyboard.close();
}
}
我修复了代码中的逻辑错误。我不知道你为什么定义最大变量。它在您的代码中并没有真正以任何有意义的方式使用。您可能需要考虑将方法的返回类型更改为“int”,并返回所找到的最大值。
此外,方法名称必须始终以小写字母开头:
您还应始终正确关闭资源:
您的代码中存在一些逻辑错误。您要做的是从文本和文件中读取一个数字,并比较该数字是否大于先前的最大值。如果是,请更新最大值,否则请检查下一个数字。在阅读整个文件之后,您应该打印max variable的值。我完全理解这个逻辑,但是当我尝试它时,它不是打印max,而是打印文件的内容。发生了什么事(这是因为你(和我!)在循环中使用了println。我修正了我的代码,只打印最终的最大值。我以为你想显示每个值,直到它达到最大值。显然,你只对最大值感兴趣。因此println(或return语句)应该在代码的末尾。:是的,就是这样!谢谢!