在我的while循环中加入min和max值检查器?

时间:2013-09-25 16:02:37

标签: java while-loop

我正在尝试将能力从用户输入中获得最小值最大值,但似乎无法使其正常工作。我尝试了一个while循环,但不确定如何真正存储最小值和最大值。

public class examReview
{
    public static void main (String[]args)
    {
        Scanner input = new Scanner(System.in);
        int numOfInputs=0;
        int currentMax
        int currentMin=0;
        double sum=0;
        int intInput = 1;
        int num;

        while (intInput != 0)
        {
            intInput = input.nextInt();

            currentMin = intInput;
            currentMax = intInput;
            System.out.println("currentminis" + currentMin);
            System.out.println("currentmaxis" + currentMax);

            sum += intInput;
            numOfInputs++;
        }

        System.out.println(numOfInputs - 1);     //Prints number of input
        System.out.println(sum);                 //Prints sum of all values entered
        System.out.println(sum/(numOfInputs-1)); //Prints average
        System.out.println(currentMin);
    }
}

5 个答案:

答案 0 :(得分:0)

while (intInput != 0)
  {
     intInput = input.nextInt();

     if(numOfInputs==0 || intInput<currentMin)currentMin = intInput;
     if(numOfInputs==0 || intInput>currentMax)currentMax = intInput;
     System.out.println("currentminis" + currentMin);
     System.out.println("currentmaxis" + currentMax);

     sum += intInput;
     numOfInputs++;

  }

答案 1 :(得分:0)

您目前每次围绕while循环更改currentMincurrentMax
显然,这些需要在循环之外进行设置。

   int currentMax=Integer.MIN_VALUE; 
   int currentMin=Interger.MAX_VALUE;

并在while循环中根据需要进行调整

    while (intInput != 0)
    {
        intInput = input.nextInt();

        if(intInput<currentMin) currentMin = intInput;
        if(intInput>currentMax) currentMax = intInput;
        System.out.println("currentminis" + currentMin);
        System.out.println("currentmaxis" + currentMax);

        sum += intInput;
        numOfInputs++;
    }

答案 2 :(得分:0)

Tom有正确的答案,您想要针对intInput测试当前的{Min,Max}:

if (intInput < currentMin ) {
      currentMin = intInput;
}

您可以通过将currentMin和currentMax分配给异常值来简化标志日志,只要您获得至少一个输入,这已经导致问题,因为您的平均值将除以零,您应该没问题。

int currentMax = Integer.MIN_VALUE;
int currentMin = Integer.MAX_VALUE;

这样任何值都将大于currentMax并且小于currentMin,你可以摆脱旗帜。

另请注意,平均值应该是sum / numOfInputs而不是sum / numOfInputs-1

答案 3 :(得分:0)

我认为你写的代码太多了。您应该使用java API:

试试这个:

public static void main (String[]args) {
    Scanner input = new Scanner(System.in);
    List<Integer> list = new ArrayList<Integer>();
    int sum = 0;
    for (int i = input.nextInt(); i > 0; i = input.nextInt()) {
        sum += i;
        list.add(i);
    }

    System.out.println(list.size());          //Prints number of input
    System.out.println(sum);                  //Prints sum of all values entered
    System.out.println(list.isEmpty() ? 0d ; sum/list.size()); //Prints average
    System.out.println(Collections.min(list));//Prints min
    System.out.println(Collections.max(list));//Prints max
}

答案 4 :(得分:0)

您需要将最大值设置为最小值,将最小值设置为最大值。然后在需要时进行比较和设置:

int currentMax = Integer.MIN_VALUE;
int currentMin = Integer.MAX_VALUE;

while(haveInput) {
   if (intInput > currentMax) currentMax = intInput;
   if (intInput < currentMin) currentMin = intInput;
   // get more input
}