2013-03-06 65 views
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); 
    } 
} 

}

回答

0

由于只有在满足条件的情况下才递增计数,所以如果您未输入小于现有最小值或大于现有最大值的项,则计数值将不正确。

你必须改变为folllows:

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

降低柜台
1

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

+0

好的,我明白了..所以如果数字既不符合标准计数也会被忽略。我原本是这样做的,但删除它以排除-99条件。谢谢! – Jim 2013-03-06 02:16:05