我可以输出程序:
输入一系列正整数(-1表示停止): 输入数字#1:5 输入数字#2:6 输入数字#3:8 输入数字#4:74 输入数字#5:75 输入数字#6:-1
但我不能让它停在-1并且它无法显示最大和第二大数字,有人可以解释我错误在哪里吗?
{{1}}
答案 0 :(得分:0)
您的代码有很多错误。首先,您打印两次相同的变量吗? 以下是一个代码,用于实现最大和第二大,而无需在数组中存储输入。
public static void main (String [] args){
int number = 0, largest = 0, secondLargest = 0, count = 0;
Scanner scanner = new Scanner(System.in);
do {
System.out.print("Enter number #"+ count++ +": ");
number = scanner.nextInt();
secondLargest = Math.max(secondLargest, number);
if(largest < number) {
secondLargest = largest;
largest = number;
}
} while(number >= 0);
System.out.println("The largest number entered is: "+largest);
System.out.println("The second largest number entered is: "+secondLargest);
scanner.close();
}
评论是否需要对其进行解释。
答案 1 :(得分:0)
一些注意事项
设计
每次输入数字时排序都很糟糕。
设计注意事项:
答案 2 :(得分:0)
你的程序并没有停留在-1,而是等待另一个输入,因为你在离开之后再次调用sc.nextInt()
。
我认为最简单的方法是在列表中写下所有数字,直到达到-1,然后浏览列表并搜索最大和第二大数字。
以下是一个例子:
public static void main(String[] args) {
int number = 0;
int numberCount = 1;
System.out.println("Enter a series of positive integers (-1 to stop): ");
List<Integer> numbers = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (number >= 0) {
System.out.print("Enter number #" + numberCount++ + ": ");
number = sc.nextInt();
numbers.add(number);
}
int largest = numbers.get(0);
int secondLargest = numbers.get(0);
int smallest = Integer.MAX_VALUE;
for (int i = 1; i < numbers.size(); i++) {
Integer currentNumber = numbers.get(i);
if (currentNumber >= largest) {
secondLargest = largest;
largest = currentNumber;
} else if (currentNumber > secondLargest) {
secondLargest = currentNumber;
}
if (currentNumber < smallest) {
smallest = currentNumber;
}
}
sc.close();
System.out.println("The largest number entered is:" + largest);
System.out.println("The second largest number entered is : " + secondLargest);
}