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. What am I doing wrong here? Thank you.
You should initialize minNumber
after parsing integers. 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. What am I doing wrong here? Thank you.
Your code is right but with some bug. Firstly, move the "int minNumber = numbersInt[0];" line after the first for loop. Secondly, remove the else part from the second for loop.
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
The problem is just for two lines
1- move int minNumber = numbersInt[0]
(Put it after first for
)
2-Delete below snippet in the second 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));
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.