0

我遇到了一个我无法弄清楚的问题,所以我发布了我的代码以寻求帮助。我是这方面的初学者,刚刚解决了 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);
   }
}

}

4

2 回答 2

1

count仅在更新较小或较大数字的情况下才增加。您需要count += 1;从 if 语句中取出并一直这样做。

于 2013-03-06T02:08:18.120 回答
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

于 2013-03-06T02:14:15.730 回答