使用循环让用户输入一个整数 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个整数放入数组中,然后求其中的最大值和最小值