我试图获取用户输入的特定文本文件中的最大数量。我也把它分成了不同的方法。这是我到目前为止所拥有的:
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,我不知道为什么。我怎样才能获得最大值?我很感激任何帮助/建议。提前谢谢。
编辑:你们所有人都在说类似的解决方案,但是当我尝试它们时,它只会输出相同的输出。我很困惑。答案 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