本当に質問を削除しますか?
質問が解決した場合は、クローズをすることができます。
解決した質問を削除せずに残しておくことで、他の方の役に立つかもしれません!
ぜひご活用ください!
要素数20の配列を宣言し、要素に0から5ずつ加算して代入させる。 [0]~[10]の値の奇数のみカンマ区切りで、 [11]~[19]の値は偶数をカンマ区切りで表示させる
始めに
独学でjavaの学習を行っています。
要素数20の配列を宣言し、要素に0から5ずつ加算して代入させる。
[0]~[10]の値の奇数のみカンマ区切りで、
[11]~[19]の値は偶数をカンマ区切りで表示させる
上記内容を行っています。
発生している問題やエラーは出ておりませんが
より簡潔化できればと思い投稿いたします。
皆様のご意見いただければ幸いです。
該当するソースコード
public class Sample006 {
public static void main (String[] args) {
int number[] = new int[20]; //20の要素を作成
String str ="";
number[0] = 0;
for(int i = 1; i < number.length; i++) {
number[i] = number[i - 1] + 5; //0から5ずつnumber[i]に加算
}
System.out.print("¥n奇数 : ");
for (int i = 0; i < 11; i++) {
if (number[i] % 2 != 0) {
str += String.valueOf(number[i]) + ",";
}
}
System.out.print(str.substring(0, str.length() - 1));
System.out.print("¥n偶数 : ");
str = "";
for (int i = 11; i < 20; i++) {
if (number[i] % 2 == 0) {
str += String.valueOf(number[i]) + ",";
}
}
System.out.print(str.substring(0, str.length() - 1));
System.out.print("¥n");
}
}
出力結果
奇数 : 5,15,25,35,45
偶数 : 60,70,80,90
開発環境
eclipse
0
類似質問が点在しているのが気になります。
for(int i = 1; i < number.length; i++) {
number[i] = i * 5;
x = i * 5;
mod = x % 2;
str1 += i < 11 && mod == 1 : x + "," : "";
str0 += i > 10 && mod == 0 : x + "," : "";
}
System.out.print("奇数 : " + str1.substring(0, str1.length() - 1) + "¥n"));
System.out.print("偶数 : " + str0.substring(0, str0.length() - 1) + "¥n"));
何故、[0]~[9]奇数,[10]~[19]偶数でないのか疑問です。
尚、私はchatGTPでないので、5加算をx = i * 5; mod = x % 2;に変更してます。
最後にはnumber要らないような気がしてます。
0
(お節介失礼します)
@HalHarada さんのコードはループを1
から回しているため、偶奇が逆になると正しい答えが得られませんので、0
からにしてみました。
int number[] = new int[20];
number[0] = 0;
for(int i = 1; i < number.length; i++) {
number[i] = number[i - 1] + 5;
}
String str0 ="";
String str1 ="";
for(int i = 0; i < number.length; i++) {
int x = number[i];
int mod = x % 2;
str1 += i < 11 && mod == 1 ? x + "," : "";
str0 += i > 10 && mod == 0 ? x + "," : "";
}
System.out.print("奇数 : " + str1.substring(0, str1.length() - 1) + "\n");
System.out.print("偶数 : " + str0.substring(0, str0.length() - 1) + "\n");
1
Stream APIとラムダ式を使った例です。
最後のカンマ出力をサボっていますが・・・
import java.util.*;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int n = 20;
int[] number = IntStream.range(0, n).map(index -> index * 5).toArray();
int[] odd = IntStream.range(0, n)
.filter(index -> index < 11 && number[index] % 2 == 1)
.map(index -> number[index])
.toArray();
int[] even = IntStream.range(0, n)
.filter(index -> index > 10 && number[index] % 2 == 0)
.map(index -> number[index])
.toArray();
System.out.println("奇数 : " + Arrays.toString(odd));
System.out.println("偶数 : " + Arrays.toString(even));
}
}
奇数 : [5, 15, 25, 35, 45]
偶数 : [60, 70, 80, 90]
0
@HalHarada さんへ
一回のループで出来ないですかね?
最初のループのnumber[i] = number[i - 1] + 5
をnumber[i] = i * 5
に変えれば、0
から始まる1回のループで出来ます。
0