有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我不能

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) 个答案

  1. # 1 楼答案

    不是100%确定我理解您的问题,但听起来您希望允许用户输入负数,但保持最小值大于0

    要做到这一点,只需改变

    if (n < min) {
    

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

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

  2. # 2 楼答案

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

    if (n<min && n>0) {
    n=min;
    }
    else{}
    
    
    if (n>max && n>0) {
    max=n;
    }
    
  3. # 3 楼答案

    您需要将值min value指定为

    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;
         }
      }
    
  4. # 4 楼答案

    这是因为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,如果你的输入是正的,bumbers说-

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

    这个街区

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

    将产生0作为最小值,而显然它应该是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