Java 数字列表中最小的和第二小的
问题2 在twosmal.java文件中编写程序 输入一组正整数,以-1结尾作为前哨。按顺序打印这些数字中的最小值和次最小值 你可以假设在-1之前至少有两个数字;你不必检查这是真的Java 数字列表中最小的和第二小的,java,Java,问题2 在twosmal.java文件中编写程序 输入一组正整数,以-1结尾作为前哨。按顺序打印这些数字中的最小值和次最小值 你可以假设在-1之前至少有两个数字;你不必检查这是真的 public class TwoSmall{ public static void main(String [] args){ int min; int secondMin; int sentinel = -1; System.out.pri
public class TwoSmall{
public static void main(String [] args){
int min;
int secondMin;
int sentinel = -1;
System.out.println("Enter atleast two numbers");
int input = IO.readInt();
min = input;
secondMin = input;
do{
if(input < min){
secondMin = min;
min = input;
}
else if (input < secondMin) {
secondMin = input;
}
input = IO.readInt();
} while(input!=sentinel);
System.out.println(min);
System.out.println(secondMin);
}
}
公共类TwoSmall{
公共静态void main(字符串[]args){
int-min;
int第二分钟;
int-sentinel=-1;
System.out.println(“输入至少两个数字”);
int input=IO.readInt();
最小值=输入;
第二分钟=输入;
做{
如果(输入<分钟){
第二分钟=分钟;
最小值=输入;
}
否则如果(输入<秒分钟){
第二分钟=输入;
}
输入=IO.readInt();
}while(输入!=sentinel);
系统输出打印项次(最小值);
系统输出打印项次(秒分钟);
}
}
这不管用吗?有人能告诉我这个程序有什么问题吗?这是因为您将
min
和secondMin
都设置为第一个输入的值。除非输入的数字小于该值,否则将出现问题。试着分别阅读这两个数字
min = IO.readInt();
secondMin = IO.readInt();
另外,重新思考你的逻辑。你可能会得到一个倒退的结果。解决此问题的一种方法是读取前两个整数,然后将它们相应地分配给min
和secondMin
。否则,如果用户输入4,3,2——结果会说3是最低的,2是第二低的——这是不正确的
@vandale提到的另一个选项是将它们都初始化为
INTEGER.MAX\u VALUE
。如果这样做,您就不需要读取min
和secondMin
的初始值。您是否尝试过一步一步地检查它,或者在头脑中仔细思考,或者在整个程序流中使用print语句跟踪它,或者使用实际的调试器?IO.readInt一次只读取1 int,但现在您正在设置min和secondMin以在阅读后输入。您不应该为这些变量中的每一个调用两个IO.readInt吗?您能详细说明它是如何失败的吗?“这不起作用”请描述您输入的内容,以及输出是什么。另一个选项是将它们初始化为整数,最大值