在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语句)应该在代码的末尾。:是的,就是这样!谢谢!