使用循环让用户输入一个整数 10 次然后得到最小值

Posted

技术标签:

【中文标题】使用循环让用户输入一个整数 10 次然后得到最小值【英文标题】:using a loop get a user to input an integer 10 times then get the minimum 【发布时间】: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 之类的初始数值。 【参考方案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());

【讨论】:

以上是关于使用循环让用户输入一个整数 10 次然后得到最小值的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程:任意输入10个整数放入数组中,然后求其中的最大值和最小值

整数的逆序

在while循环中从用户输入中获取最小值

第三次过程性考核

输入一批整数,输出其中的最大值和最小值,输入数字0就结束循环。如下所示

嗯嗯 用c语言编写从键盘输入10个整数,将最小值与第一个数交换,最大值与最后一个交换,然后输出交换后的数