Java 无法使用不带数组的while循环显示第三大数字
我的代码要求用户输入三个数字,它应该显示您输入的第三个数字。我已经对这段代码进行了至少一个小时的故障排除,但是没有用Java 无法使用不带数组的while循环显示第三大数字,java,while-loop,Java,While Loop,我的代码要求用户输入三个数字,它应该显示您输入的第三个数字。我已经对这段代码进行了至少一个小时的故障排除,但是没有用 import java.util.Scanner; public class thirdLargest { public static void main(String[] args) { Scanner input = new Scanner(System.in); int largest = 0; int secon
import java.util.Scanner;
public class thirdLargest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int largest = 0;
int secondLargest = 0;
int thirdLargest = 0;
int counter = 0;
int number;
while (counter < 4) {
System.out.println("Enter a number");
number = input.nextInt();
if (number > largest) {
number = largest;
largest = secondLargest;
} else if (number > secondLargest) {
number = secondLargest;
secondLargest = thirdLargest;
} else if (number > thirdLargest) {
thirdLargest = number;
}
counter++;
}
System.out.println("Third largest number is " + thirdLargest);
}
}
import java.util.Scanner;
公共类第三大类{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int最大=0;
int=0;
int thirdLargest=0;
int计数器=0;
整数;
while(计数器<4){
System.out.println(“输入一个数字”);
number=input.nextInt();
如果(数量>最大值){
数量=最大;
最大=第二大;
}else if(数字>第二大){
数量=第二大;
第二大=第三大;
}否则如果(编号>第三大){
第三大=数量;
}
计数器++;
}
System.out.println(“第三大数字是”+thirdLargest);
}
}
这是输出
输入一个数字99
输入一个数字
88
输入一个数字
77
输入一个数字
66
输入一个数字
55
第三大数字是0 进程已完成,退出代码为0 试一试 1) 将用户输入存储在int的ArrayList中 2) 使用Collection.sort(yourList)对数组进行排序 3) 打印列表中的第一个元素。获取(0)
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
整数;
ArrayList al=新的ArrayList();
对于(inti=0;i我相信下面的代码可以使用您的逻辑工作,而不使用数组
import java.util.Scanner;
public class thirdLargest {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int largest=0;
int secondLargest=0;
int thirdLargest=0;
int counter=0;
int number;
while(counter<4){
System.out.println("Enter a number");
number=input.nextInt();
if (number > largest){
thirdLargest = secondLargest;
secondLargest = largest;
largest = number;
}
else if (number > secondLargest){
thirdLargest = secondLargest;
secondLargest = number;
}
else if (number > thirdLargest){
thirdLargest = number
}
}
System.out.println("Third largest number is "+thirdLargest);
}
import java.util.Scanner;
公共类第三大类{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int最大=0;
int=0;
int thirdLargest=0;
int计数器=0;
整数;
while(柜台最大){
第三大=第二大;
第二大=最大;
最大=数量;
}
else if(数字>第二大){
第三大=第二大;
第二大=数量;
}
否则如果(编号>第三大){
第三大=数字
}
}
System.out.println(“第三大数字是”+thirdLargest);
}
如果用户连续输入较大的数字,如果(数字>最大值){
将始终为真,这意味着永远不会设置第三大值。我认为您需要重新写入。除了逻辑错误之外,你应该通过调试来弄清楚,你似乎有一半的时间不理解赋值是如何工作的。number=maximust
更改number
,而不是maximust
。maximust也保持在0,没有通过第一个if语句,需要重写。我建议将System.out.println(计数器+”)+maxist+“”+secondmaxist+“”+thirdLargest);
在您的计数器之前+
——这将帮助您查看正在发生的事情。您还可以将例如System.out.println(“if(A)”;
放在每个if/else块中
。最好使用调试器。学习永远不会太早。
import java.util.Scanner;
public class thirdLargest {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int largest=0;
int secondLargest=0;
int thirdLargest=0;
int counter=0;
int number;
while(counter<4){
System.out.println("Enter a number");
number=input.nextInt();
if (number > largest){
thirdLargest = secondLargest;
secondLargest = largest;
largest = number;
}
else if (number > secondLargest){
thirdLargest = secondLargest;
secondLargest = number;
}
else if (number > thirdLargest){
thirdLargest = number
}
}
System.out.println("Third largest number is "+thirdLargest);
}