很抱歉,如果已存在相同的问题,我无法找到实际答案。
我想找出一种方法来找到用户输入值中的最大整数,而不将所有数字存储到数组中并允许负数。我遇到的问题是我无法初始化最伟大的'首先要求一个值之前的值。这就是我到目前为止所拥有的:
import java.util.Scanner;
public class FindGreatest {
public static void main(String[] args) {
int greatest;
int current;
boolean first = true;
boolean keepGoing = true;
boolean initialized = false;
Scanner in = new Scanner(System.in);
while (keepGoing) {
System.out.print("Input an integer: ");
String input = in.nextLine();
if (input.equals("")) {
keepGoing = false;
}
else {
try {
current = Integer.parseInt(input);
if (first) {
greatest = current;
first = false;
initialized = true;
}
else if (current > greatest) { // compiler error
greatest = current;
}
}
catch (NumberFormatException e) {
//
}
}
}
if (initialized) {
System.out.println(greatest); // compiler error
}
}
}
最后一个打印声明并没有结束,即使它看起来我不应该在那时没有初始化。
如果有人能够发现我的错误或提供更清洁的解决方案,那就很好了
编辑:初始化'最大'具有随机值也显然足以修复此特定代码段答案 0 :(得分:4)
添加:
int greatest = Integer.MIN_VALUE;
删除:
if (first) {
greatest = current;
first = false;
initialized = true;
}
else if (current > greatest) {
greatest = current;
}
添加:
if(current > greatest)
greatest = current;
答案 1 :(得分:1)
最干净的方法是在循环开始之前读取第一个值,并使用它来初始化greatest
。您可能需要额外的if
来处理没有输入值的情况,但是一旦进入循环,您就不必担心这种可能性。
答案 2 :(得分:0)
您可以使用Integer的Object版本并执行如下所示的空检查:
import java.util.Scanner;
public class FindGreatest {
public static void main(String[] args) {
Integer greatest = null;
Scanner in = new Scanner(System.in);
while (true) {
System.out.print("Input an integer: ");
input = in.nextLine();
if ("".eq(input)) {
break; // out of while true loop
}
try {
int current = Integer.parseInt(input);
if (greatest == null || current > greatest) {
greatest = current;
}
} catch (NumberFormatException e) {}
}
if (greatest != null) {
System.out.println(greatest);
}
}
}
答案 3 :(得分:0)
不使用任何布尔标志,对于无限数量的输入,我们可以获得+ ve或-ve Max值。
public static void main(String[] args) {
int highest=Integer.MIN_VALUE, lowest=Integer.MAX_VALUE, num=0;
Scanner scan = new Scanner(System.in);
while(true){
System.out.print("Enter a number:");
String input = scan.nextLine();
if (input.equals("")) {
break;
}else{
num = Integer.parseInt(input);
if (num > highest){
highest = num;
}
if(num < lowest){
lowest = num;
}
}
}
System.out.println("Highest number is: " + highest);
}