[英]Java: how to find the minimum of an array (user input)
So far, this is my code:到目前为止,这是我的代码:
public static void main(String[] args)
{
System.out.println("Please input numbers");
Scanner myScan = new Scanner(System.in);
String input = myScan.nextLine();
String[] numbers = input.split(" ");
int[] numbersInt = new int[numbers.length];
int minNumber = numbersInt[0];
for(int i = 0 ; i < numbers.length; i++)
{
numbersInt[i] = Integer.parseInt(numbers[i]);
}
for(int i = 1; i < numbers.length; i++)
{
if(numbersInt[i] < minNumber)
{
minNumber = numbersInt[i];
}else if(minNumber < numbersInt[i])
{
minNumber = numbersInt[0];
}
}
System.out.println(minNumber);
}
}
For example, if I type in the integers '20 15 60', I get the number "20" as the minimum.例如,如果我输入整数“20 15 60”,我得到的数字“20”是最小值。 What am I doing wrong here?
我在这里做错了什么? Thank you.
谢谢你。
You should initialize minNumber
after parsing integers.您应该在解析整数后初始化
minNumber
。 also else if is not necessary.如果没有必要,也可以。 so this line should be moved:
所以应该移动这一行:
int minNumber = numbersInt[0];
so your code would be like:所以你的代码就像:
System.out.println("Please input numbers");
Scanner myScan = new Scanner(System.in);
String input = myScan.nextLine();
String[] numbers = input.split(" ");
int[] numbersInt = new int[numbers.length];
for(int i = 0 ; i < numbers.length; i++)
{
numbersInt[i] = Integer.parseInt(numbers[i]);
}
int minNumber = numbersInt[0];
for(int i = 1; i < numbers.length; i++)
{
if(numbersInt[i] < minNumber)
{
minNumber = numbersInt[i];
}
}
System.out.println(minNumber);
although this is not the true way of reading a line of integers.尽管这不是读取一行整数的真正方法。 you can do it like this:
你可以这样做:
Scanner myScan = new Scanner(System.in);
System.out.println("How many numbers do you want to enter?");
int n = myScan.nextInt();
System.out.println("Please input numbers");
int[] numbersInt = new int[n];
for(int i = 0 ; i < n; i++)
{
numbersInt[i] = myScan.nextInt();
}
So far, this is my code:到目前为止,这是我的代码:
public static void main(String[] args)
{
System.out.println("Please input numbers");
Scanner myScan = new Scanner(System.in);
String input = myScan.nextLine();
String[] numbers = input.split(" ");
int[] numbersInt = new int[numbers.length];
int minNumber = numbersInt[0];
for(int i = 0 ; i < numbers.length; i++)
{
numbersInt[i] = Integer.parseInt(numbers[i]);
}
for(int i = 1; i < numbers.length; i++)
{
if(numbersInt[i] < minNumber)
{
minNumber = numbersInt[i];
}else if(minNumber < numbersInt[i])
{
minNumber = numbersInt[0];
}
}
System.out.println(minNumber);
}
}
For example, if I type in the integers '20 15 60', I get the number "20" as the minimum.例如,如果我输入整数“20 15 60”,我会得到最小的数字“20”。 What am I doing wrong here?
我在这里做错了什么? Thank you.
谢谢你。
Your code is right but with some bug.您的代码是正确的,但有一些错误。 Firstly, move the "int minNumber = numbersInt[0];"
首先,移动“int minNumber = numbersInt[0];” line after the first for loop.
第一个 for 循环之后的行。 Secondly, remove the else part from the second for loop.
其次,从第二个 for 循环中删除 else 部分。
For your better under standing I am posting your code again:) with fixes.为了您更好地理解,我再次发布您的代码 :) 并进行了修复。
public static void main(String[] args) {
System.out.println("Please input numbers");
Scanner myScan = new Scanner(System.in);
String input = myScan.nextLine();
String[] numbers = input.split(" ");
int[] numbersInt = new int[numbers.length];
for (int i = 0; i < numbers.length; i++) {
numbersInt[i] = Integer.parseInt(numbers[i]);
}
int minNumber = numbersInt[0];
for (int i = 1; i < numbers.length; i++) {
if (numbersInt[i] < minNumber) {
minNumber = numbersInt[i];
}
}
System.out.println(minNumber);
}
Solution 1
解决方案 1
The problem is just for two lines问题只是两行
1- move int minNumber = numbersInt[0]
(Put it after first for
) 1- move
int minNumber = numbersInt[0]
(把它放在 first for
之后)
2-Delete below snippet in the second for
2-在第二
for
删除下面的代码片段
else if(minNumber < numbersInt[i])
{
minNumber = numbersInt[0];
}
Finally, your code can be as follows
最后,你的代码可以如下
public static void main(String[] args) {
System.out.println("Please input numbers");
Scanner myScan = new Scanner(System.in);
String input = myScan.nextLine();
String[] numbers = input.split(" ");
int[] numbersInt = new int[numbers.length];
for (int i = 0; i < numbers.length; i++) {
numbersInt[i] = Integer.parseInt(numbers[i]);
}
//Changed
int minNumber = numbersInt[0];
for (int i = 1; i < numbers.length; i++) {
if (numbersInt[i] < minNumber) {
minNumber = numbersInt[i];
}
//Changed (deleted)
}
System.out.println(minNumber);
}
Solution 2
方案二
I would recommend this code for your scenario我会为您的场景推荐此代码
public static void main(String[] args) {
System.out.println("Please enter numbers, if you wanna stop just enter non numeric input");
Scanner scanner = new Scanner(System.in);
//Get input numbers and add it to the list
List<Integer> numberList = new ArrayList<Integer>();
while (scanner.hasNextInt()) {
numberList.add(scanner.nextInt());
}
//Get the minimum of numberList
System.out.println("Min :" + Collections.min(numberList));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.