私はかなり新しいJavaです。 私はプロジェクトのためにいくつかのことを試していますが、なぜこれがうまくいかないのか分かりません。 ここでの目標は、スペースで区切られた数字と文字で終わる数字を入力させることです。次に、プログラムは偶数および奇数のインデックス番号を数え、どの合計が大きいかを出力する必要があります。入力がスペースで区切られ、文字で終わったときの数字の数はどのように数えますか?
与えられた数値が定数だったときにすでにこれを成功させましたが、今はユーザー入力に適応させたいと思います。 配列に数値を入れたいので、この配列の長さを知る必要があります。これを得るには、ユーザーが入れる数値の数を数えたいので、適切な長さの配列を作成できます。
何らかの理由でwhileループが終了せず、実行を継続します。どのように数字を入れるのですか?
EDIT
I)は、(in.next追加しました。最初のwhileループでは、最初のinput要素でスタックされません。しかし、これは、2つのwhileループが同じ入力をループしようとしているというさらなる問題を引き起こします。 2番目のスキャナを作成して最初のスキャナをリセットしようとしましたが、2番目のループが最初の要素から開始されません。以前の答えは、これは不可能であることを示していますが、配列を使用して値を格納している間にループ中にこれを置く方法はありますか?
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