我需要允许负整数,但只考虑Max和Min的正整数

时间:2013-11-17 07:07:17

标签: java

我不能

Javacode:

import java.util.Scanner;

public class onem {
  public static void main (String[]args) {
      Scanner k=new Scanner(System.in);
      int sum=0;
      int i=1;4
      int min=0;
      int max=0;
      int avg=0;

      while(i<=10) {
         int n;
         System.out.println("write a number");    
         n=k.nextInt();

         if (n<min) {
            n=min;
         }
         else{}

         if (n>max) {
            max=n;
         }

         sum=sum+n;

         i++;
     }

     avg=sum/10;
     System.out.println(min);
     System.out.println(avg);
     System.out.println(max);            
  }
}

4 个答案:

答案 0 :(得分:1)

这是因为max和min的初始值

int min=0;
int max=0;
int avg=0;

while(i<=10) {

    int n;
    System.out.println("write a number");
    n=k.nextInt();

现在,因为min是0,如果你的输入是正面的,那么说 -

"1,2,3,4,5,6,7,8,9,10"

此块

    if (n<min) {   
        n=min;
    }
    else{}

   if (n>max) {
        max=n;
   }

将产生0作为min,而显然它应该是1

另一种情况是你的输入是

"-1,-2,-3,-4,-5,-6,-7,-8,-9,-10"

您的代码将生成最大值为0,而它应为-1。

因此将默认值更改为

min = Integer.MAX_VALUE;  // Maximum value
max = Integer.MIN_VALUE;  // Minimum value

答案 1 :(得分:0)

为您的条件添加大于零的检查:

if (n<min && n>0) {
n=min;
}
else{}


if (n>max && n>0) {
max=n;
}

答案 2 :(得分:0)

不是100%确定我理解你的问题,但听起来你想让用户输入负数但保持min大于0。

要做到这一点,只需更改

即可
if (n < min) {

if (n < min && n > 0) {

稍微澄清一下您的问题(样本输入/输出会有所帮助),我们将能够为您提供更多帮助。

答案 3 :(得分:0)

您需要将值最小值指定为

int min=Integer.MAX_VALUE;

将您的逻辑更改为

  if(n>0){ //which will allow positive value
    if (n<min) {
        min=n;// Assign min with value
     }
     if (n>max) {
        max=n;
     }
  }