从java中的输入文本文件中查找最大值

时间:2017-03-31 16:03:35

标签: java

我试图获取用户输入的特定文本文件中的最大数量。我也把它分成了不同的方法。这是我到目前为止所拥有的:

int(raw_input("What age are you?"))

输出正在打印文本文件中除第一个值以外的所有内容,而不是打印最大值。例如,如果文本文件是:

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);

}

它只打印2,3,4和5,我不知道为什么。我怎样才能获得最大值?我很感激任何帮助/建议。提前谢谢。

编辑:你们所有人都在说类似的解决方案,但是当我尝试它们时,它只会输出相同的输出。我很困惑。

5 个答案:

答案 0 :(得分:1)

您的代码实际上并未找到最大值,而是打印出每个大于其读入的第一个数字的数字。请注意,您永远不会为big分配新值。此外,maximum纯粹是跟踪大于big的数字(文件中的第一个数字)。

这应该这样做:

while (fileScanner.hasNextInt()) {
    int num = fileScanner.nextInt();
    if (num > big) 
       big = num;
}

答案 1 :(得分:0)

每当您获得大于num的{​​{1}}时,您应该使用`num'更新big。像这样 -

big

然后在完成循环后,您将获得最大数量。只需打印while (fileScanner.hasNextInt()) { int num = fileScanner.nextInt(); if(num > big) { big = num; } } -

即可
big

答案 2 :(得分:0)

虽然您的代码中存在许多错误。我认为你问的问题是打印多个数字的原因。

只需将System.out.println(num);此行放在while循环之外。并修复其他错误以使其正常工作。

答案 3 :(得分:0)

你想要做的是在循环中:

if(num > big) {
    big = num;        
}

然后当你完成while循环时,你只需打印大:
    的System.out.println(大);
你不需要那么大,因为你没有使用它,但是如果你应该首先修复语法错误(错误放置和丢失括号)或者你没有正确复制代码。

答案 4 :(得分:0)

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”并返回找到的最大值。

此外,方法名称必须始终以小写字母开头: http://www.javatpoint.com/java-naming-conventions

您还应始终正确关闭资源: How to Correctly Close Resources