Я совершенно новый для java. Я пробовал некоторые вещи для проекта, но я не понимаю, почему это не работает. Цель состоит в том, чтобы позволить пользователям вводить числа, разделенные пробелами, и заканчивать буквой. Затем программе необходимо подсчитать четные и нечетные индексированные числа и выводить, какая сумма больше.Как вы рассчитываете количество чисел, когда ввод задается разделенным пробелами, заканчивающимся буквой?
Я уже сделал это успешно, когда количество заданных чисел было постоянным, но теперь я хочу, чтобы он адаптировался к пользовательскому вводу. Поскольку я хочу поместить числа в массив, мне нужно знать длину этого массива. Чтобы получить это, я хочу подсчитать количество номеров, которые помещает пользователь, поэтому я могу создать соответствующий массив длины.
По какой-то причине цикл while не заканчивается и продолжает работать. Как подсчитать количество введенных чисел?
EDIT
Я добавил in.next(); в первом цикле while, поэтому он не застревает в первом входном элементе. Это приводит меня к еще одной проблеме, однако, наличие двух циклов, которые пытаются пропустить один и тот же вход. Я попытался создать второй сканер и сбросить первый, но второй цикл не запускается в первом элементе. Предыдущие ответы показывают, что это невозможно, есть ли способ поставить это в один цикл while, все еще используя массивы для хранения значений?
P.S. Входные значения должны быть любыми положительными или отрицательными целыми числами.
Вот мой полный код:
import java.util.Scanner;
public class LargerArraySum {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int length = 0;
System.out.println("Enter your numbers seperated by spaces, end with a letter");
while(in.hasNextInt()) {
length++;
in.next();
}
System.out.println(length);
int arra[] = new int[length];
while(in.hasNextInt()) {
for(int i=0;i<length;i++) {
int x = in.nextInt();
arra[i] = x;
}
}
int evenSum = EvenArraySum(arra);
int oddSum = OddArraySum(arra);
if(evenSum<oddSum) {
System.out.println("The sum of the odd indexed elements is bigger");
} else if(oddSum<evenSum) {
System.out.println("The sum of the even indexed elements is bigger");
} else {
System.out.println("The sum of the odd and even indexed elements is equal");
}
}
public static int EvenArraySum(int[] a) {
int sum = 0;
for(int i=1;i<a.length;i+=2) {
sum += a[i];
}
System.out.println("The sum of the even indexed elements is: " + sum);
return sum;
}
public static int OddArraySum(int[] a) {
int sum = 0;
for(int i=0;i<a.length;i+=2) {
sum += a[i];
}
System.out.println("The sum of the odd indexed elements is: " + sum);
return sum;
}
}
Какой цикл 'while' продолжает работать? У вас есть 2. – Eabryt
Ваш цикл while не заканчивается, потому что вы не потребляете следующий int, поэтому вы всегда проверяете тот же номер. Я предлагаю использовать ArrayList для вашего случая вместо массива с фиксированной длиной. – IQV
Тот, в котором я делаю возведение длины – Fiosaurus