【问题标题】:using a loop get a user to input an integer 10 times then get the minimum使用循环让用户输入一个整数 10 次然后得到最小值
【发布时间】:2015-01-08 20:42:10
【问题描述】:

我有一个家庭作业,我需要使用一个循环编写一个程序,该循环从用户那里获取 10 个整数值并输出所有输入值中的最小值。

这是我得到的:

import java.util.Scanner;

public class Num52
{
    public static void main (String [] args )
    {

   int value;
   int minValue;

   Scanner scan = new Scanner(System.in);

   for( int i = 0; i < 10; i++ )
   {

      System.out.print( "Enter a number as an integer > " );   

      value = scan.nextInt( );

      if( value < minValue )

      minValue = value;

      }

      System.out.println( "The minimum number is " + minValue );


  }
 }

【问题讨论】:

  • 好的。到目前为止,您取得了什么成就?
  • 我们不会为你做功课;发布您已经尝试或研究过的内容。
  • 不好意思,输入之前不小心发了!
  • 好的,那你有什么问题?
  • 一直说 minValue 还没有初始化,但是我需要得到最小值而不给它一个像 1000 之类的初始数值。

标签: java loops minimum


【解决方案1】:

您忘记初始化 minValue。

在你的 for 循环中试试这个

if (i == 0)
    minValue = value;

或者你可以像这样在for循环之前初始化

minValue = Interger.MAX_VALUE; //This is more efficient code.

【讨论】:

  • 这是一种糟糕的编码方式。因为这只是 10 次迭代,所以没问题。否则会影响性能。
  • @StackFlowed 你能建议一个更好的解决方案吗?在您的回答中,您做了完全相同的事情,甚至还提供了一个效率较低的版本。我认为这是完全可以接受的。
  • @StackFlowed 我怀疑他的导师是否关心这句话的性能影响。还有很多其他的东西会引入比这更多的开销。甚至不知道为什么你觉得有必要提出来。
  • @jonogilmour 如果您对代码效率有所了解,您就不会这么说。请尝试运行这两个代码 10^8 次并查看时间差异。我初始化了变量。而且我不会在循环中比较它。
  • @AndySenn 使用 Java 就是这样一种开销。这显然是一个“学习 Java”类,而不是算法类。
【解决方案2】:

你必须初始化minValue,最好是高一点的,比如Integer.MAX_VALUE

【讨论】:

    【解决方案3】:

    你必须给你的minValue 一个初始值。我建议Integer.MAX_VALUE。另外,你也可以使用Math.min(int, int) like

    public static void main(String[] args) {
        int minValue = Integer.MAX_VALUE;
        Scanner scan = new Scanner(System.in);
        for (int i = 0; i < 10; i++) {
            System.out.print("Enter a number as an integer > ");
            System.out.flush();
            minValue = Math.min(scan.nextInt(), minValue);
        }
        System.out.println("The minimum number is " + minValue);
    }
    

    【讨论】:

      【解决方案4】:

      您需要将minValue 初始化为用户不会输入的某个最大值。为了更好的安全性,你应该初始化为Integer.MAX_VALUE

      【讨论】:

        【解决方案5】:

        您希望从正确的 minValaue 值开始。我们应该将其设置为 MAX_VALUE

        public static void main (String [] args )
        {    
           int value;
           int minValue=Interger.MAX_VALUE;
           Scanner scan = new Scanner(System.in);
           for( int i = 0; i < 10; i++ )
           {
              System.out.print( "Enter a number as an integer > " );   
              value = scan.nextInt( );
              if( value < minValue ) {
                  minValue = value;
              }
           }
           System.out.println( "The minimum number is " + minValue );
        }
        

        【讨论】:

          【解决方案6】:
          if( value < minValue )
          

          您的 minValue 未初始化,因为它是本地的。您正在将价值与任何东西进行比较。如果要获取 int 变量的默认值 0,请将其设为全局变量。否则,给它你自己的默认值,也许 Integer.MAX_VALUE 作为其他答案的建议。

          【讨论】:

            【解决方案7】:

            您忘记使用起始编号初始化您的 minValue 变量。最好的办法是使用Integer.MAX_VALUE 对其进行初始化,如下所示:

            int minValue = Integer.MAX_VALUE;
            

            此外,您应该稍微改变获取整数的方式,如下所示:

            value = Integer.parseInt(scan.nextLine());
            

            【讨论】:

              猜你喜欢
              • 2017-07-17
              • 1970-01-01
              • 1970-01-01
              • 2021-09-09
              • 2013-09-02
              • 2021-11-09
              • 1970-01-01
              • 1970-01-01
              • 2017-04-25
              相关资源
              最近更新 更多