初学者 - Do while循环和最小/最大条目

时间:2013-03-06 02:04:38

标签: java do-while

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

}

2 个答案:

答案 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(