【问题标题】:minimum value in java won't workjava中的最小值不起作用
【发布时间】:2012-06-06 01:53:12
【问题描述】:

我需要帮助,因为我的脑细胞找不到这个程序的问题! 这是代码

     import java.util.*;
      public class student{
      public static void main (String []args)

    { 
        Scanner sc=new Scanner(System.in);
        System.out.println("enter number elements");  //asking the user to enter the number of integer items 
        int num=sc.nextInt();
        int []myArray= new int[num];
        int maxValue=myArray[0];
        int minValue=myArray[0];
        int i;
        for( i=0; i<myArray.length;i++)
        {System.out.print("Enter element"+(i+1));  //asking the user to enter the items 
           myArray[i]=sc.nextInt();
        }

        for(i=0; i<myArray.length;i++)
        {System.out.print(myArray[i]);    //displaying the elements 
        }
        System.out.println(" ");
        for( i=myArray.length-1; i>=0;i--)
        {System.out.print(myArray[i]);      //displaying the elements in a backward order
        }
        System.out.println(" ");
        for( i=0; i<myArray.length;i++)
        {if(i%2==1)

           System.out.println(myArray[i]);               //displaying the elements in odd indices

        }

      for( i=0; i<myArray.length-1;i++)
        { if(myArray[i]>maxValue)
            {
                maxValue= myArray[i];           //finding the maximum


            }

        }
        System.out.println(maxValue+" "+(i+1));

        for( i=1; i<myArray.length-1;i++)
        { if( myArray[i]<minValue)
            {minValue= myArray[i];                //finding the minimum

            }
        }
       System.out.println(+minValue+" "+(i+1));



        System.out.println(myArray[0]);                          //displaying first item
        System.out.println( myArray[myArray.length-1]);          //displaying last item




        for( i=0; i<myArray.length;i++)
        {if(i%2==0)

          {  myArray[i]= myArray[i]*-1;                    //multiplying items in even indices by -1

        System.out.print( myArray[i]);}
    }
  }

}

该程序执行评论中的内容,但即使我不输入它,最小值也始终为零......我无法弄清楚问题出在哪里,因此非常感谢您的帮助!

【问题讨论】:

  • 注:for( i=1; i&lt;myArray.length-1;i++) 。在这里,您错过了数组的一个元素。更改为i&lt;=myArray.length-1
  • int minValue=myArray[0]; 我想是他一开始就分配的
  • 另外请稍微修改一下这段代码。用不同的方法计算最大值和最小值
  • 是的,刚刚编译并成功了!再次感谢
  • 此代码格式错误。你应该看看 Java 代码约定:oracle.com/technetwork/java/codeconv-138413.html

标签: java arrays loops for-loop


【解决方案1】:
int minValue=myArray[0]; 

由于这一行,您的 minValue 被设置为 0。因此,只有当下面代码中的 myArray[i] 小于 0 时,才会在此方法中重置最小值。否则它保持为 0。

 for( i=1; i<myArray.length-1;i++) 
        { 
           if( myArray[i]<minValue) 
            {
              minValue= myArray[i];                

            } 
        } 

【讨论】:

  • 感谢大家为我整理并详细说明...非常感谢:)!
【解决方案2】:

当您查找一组值的最小值或最大值时,最好假设所有值都大于默认最大值(即将最大值设置为可能的最小整数),并且所有值都将小于默认最小值(即将最小值设置为可能的最大整数)。

上面的内容听起来违反直觉,但是当您遍历数组时,如果遇到比最大值“更大”的值,您会更新最大值。同样的想法适用于最小值(即,如果您发现一个小于最小值的值)。由于两者都会从逻辑极端开始,您将能够更轻松地找到真正的最小值/最大值。

代码

int maxValue=myArray[0];
int minValue=myArray[0];

暗示maxValueminValue 都是0,因为原始整数数组将始终用零填充自身。相反,你应该试试这个:

int maxValue=Integer.MIN_VALUE;
int minValue=Integer.MAX_VALUE;

有关这些 Integer 常量的一些说明,请查看 API 中的 Integer.MAX_VALUEInteger.MIN_VALUE

【讨论】:

    【解决方案3】:

    你初始化你的数组。然后给出默认值(每个int初始化为0)

       int []myArray= new int[num];
       int minValue=myArray[0];
    

    它将是 0

    因此,如果您输入正整数,则找不到比零更小的值

    解决方案 首先用用户输入填充你的数组 然后做

     int minValue=myArray[0];
    

    或使用 Integer.MIN_VALUE。

    【讨论】:

      【解决方案4】:
      int []myArray= new int[num];
      

      int数组默认元素为0

      【讨论】:

        猜你喜欢
        • 2018-01-25
        • 2018-08-14
        • 2015-04-08
        • 2022-08-08
        • 1970-01-01
        • 2022-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多