我遇到了一个我无法弄清楚的问题,所以我发布了我的代码以获得一些帮助。我是这方面的初学者,刚刚解决了do-while循环,所以真可惜! :)分配是编写一个存储最小和最大的整数条目程序,记录条目数并终止于-99的条目。我发现如果我输入一些整数,那么计数是错误的,而其他人则是正确的。数据:15,30,25,20 ......显示为“您输入了2个数字”。其他条目提出正确。我非常感谢有人告诉我我错过了什么。
import java.util.Scanner;
public class LargestSmallest {
public static void main(String[] args)
{
int entry, smaller=0, larger=0,count=0;
boolean again=true;
Scanner input = new Scanner(System.in);
do
{System.out.print("Enter your integer: ");
entry = input.nextInt();
if (count==0 && entry !=-99)
{
larger = entry;
smaller = entry;
count +=1;
}
else
{
if (entry < smaller && entry!=-99 )
{
smaller = entry;
count+=1;
}
else if (entry > larger && entry !=-99)
{
larger = entry;
count+=1;
}
}
if (entry == -99)
again = false;
}
while (again);
if (count >1)
{
System.out.println("You entered "+count+" numbers.");
System.out.println("Your smallest number is: "+ smaller);
System.out.println("Your largest number is: "+larger);
}
}
}
答案 0 :(得分:1)
在更新较小或较大的数字的情况下,您只是递增count
。你需要从if语句中取出count += 1;
并一直这样做。
答案 1 :(得分:0)
由于只有在条件满足时才递增计数,如果您的条目小于现有的最小值或大于现有的最大值,则计数值不会正确。
你必须改变如下:
else
{
if (entry < smaller && entry!=-99 )
{
smaller = entry;
}
else if (entry > larger && entry !=-99)
{
larger = entry;
}
count+=1;
}
if (entry == -99) {
again = false;
count --;
}
由于仅在计数递增后才检查-99条件,如果用户输入-99,则必须将计数器减1(
)