質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1613閲覧

それまで出力した整数の1の位が同じものをまとめて表示するプログラムを作りたいです。入力された整数値は、ArrayListで作った可変長配列の中に格納すること。

ssssa

総合スコア39

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/11/13 15:38

編集2018/11/19 16:22

Java

1public static void main(String[] args) { 2 List<Integer> list = new ArrayList<Integer>();// リストを用意する 3 while (true) { 4 int a = (int) (Math.random() * 101);// 0から100まで乱数生成 5 System.out.println("0~100の値を出力:" + a);// 100まで表示 6 if (a == 0) {// 0の時 7 break;// 終了する 8 } 9 list.add(a);// リストに追加する 10 } 11 for (int i = 0; i < 10; i++) {// 10の位のfor文 12 String result = "";// 空白する 13 for (int a = 0; i < list.size(); i++) {// listの中 14 if (a % 10 == i) {// 10で割り1の位を決める 15 result += " " + a;// 1の位数決定 16 } 17 } 18 if (result.equals("")) {// 該当する数値が無い場合 19 result = " なし";// 20 } 21 System.out.println("一の位が" + i + ":" + result);// 乱数を表示させる 22 } 23 } 24} 25

期待値としては下記のようになればいいのです。
0~100の値を出力:50
0~100の値を出力:43
0~100の値を出力:2
0~100の値を出力:12
0~100の値を出力:34
0~100の値を出力:24
0~100の値を出力:8
0~100の値を出力:0 ← 0が出たら、出力を終える

一の位が0 : 50
一の位が1 : なし ← 該当する数値が無い場合は、「なし」と表示する。
一の位が2 : 2
一の位が3 : 43
一の位が4 : 24 34 ← 該当するものが複数存在する場合は、すべて表示する。
一の位が5 : なし
一の位が6 : なし
一の位が7 : なし
一の位が8 : 8
一の位が9 : なし

現状、うまく表示できず結果は
0~100の値を出力:91
0~100の値を出力:79
0~100の値を出力:8
0~100の値を出力:44
0~100の値を出力:38
0~100の値を出力:86
0~100の値を出力:14
0~100の値を出力:60
0~100の値を出力:38
0~100の値を出力:67
0~100の値を出力:98
0~100の値を出力:51
0~100の値を出力:2
0~100の値を出力:96
0~100の値を出力:41
0~100の値を出力:61
0~100の値を出力:52
0~100の値を出力:100
0~100の値を出力:52
0~100の値を出力:94
0~100の値を出力:87
0~100の値を出力:39
0~100の値を出力:59
0~100の値を出力:64
0~100の値を出力:73
0~100の値を出力:67
0~100の値を出力:2
0~100の値を出力:96
0~100の値を出力:12
0~100の値を出力:69
0~100の値を出力:63
0~100の値を出力:42
0~100の値を出力:85
0~100の値を出力:36
0~100の値を出力:75
0~100の値を出力:16
0~100の値を出力:43
0~100の値を出力:94
0~100の値を出力:60
0~100の値を出力:70
0~100の値を出力:37
0~100の値を出力:56
0~100の値を出力:74
0~100の値を出力:54
0~100の値を出力:2
0~100の値を出力:10
0~100の値を出力:6
0~100の値を出力:56
0~100の値を出力:24
0~100の値を出力:84
0~100の値を出力:66
0~100の値を出力:21
0~100の値を出力:59
0~100の値を出力:16
0~100の値を出力:73
0~100の値を出力:74
0~100の値を出力:28
0~100の値を出力:92
0~100の値を出力:54
0~100の値を出力:4
0~100の値を出力:34
0~100の値を出力:87
0~100の値を出力:28
0~100の値を出力:17
0~100の値を出力:6
0~100の値を出力:46
0~100の値を出力:7
0~100の値を出力:2
0~100の値を出力:75
0~100の値を出力:93
0~100の値を出力:19
0~100の値を出力:85
0~100の値を出力:88
0~100の値を出力:50
0~100の値を出力:79
0~100の値を出力:90
0~100の値を出力:24
0~100の値を出力:16
0~100の値を出力:83
0~100の値を出力:71
0~100の値を出力:80
0~100の値を出力:0

一の位が0:[Ljava.lang.String;@6d06d69c
60 100 60 70 10 50 90 80

一の位が1:[Ljava.lang.String;@6d06d69c
91 51 41 61 21 71

一の位が2:[Ljava.lang.String;@6d06d69c
2 52 52 2 12 42 2 92 2

一の位が3:[Ljava.lang.String;@6d06d69c
73 63 43 73 93 83

一の位が4:[Ljava.lang.String;@6d06d69c
44 14 94 64 94 74 54 24 84 74 54 4 34 24

一の位が5:[Ljava.lang.String;@6d06d69c
85 75 75 85

一の位が6:[Ljava.lang.String;@6d06d69c
86 96 96 36 16 56 6 56 66 16 6 46 16

一の位が7:[Ljava.lang.String;@6d06d69c
67 87 67 37 87 17 7

一の位が8:[Ljava.lang.String;@6d06d69c
8 38 38 98 28 28 88

一の位が9:[Ljava.lang.String;@6d06d69c
79 39 59 69 59 19 79
なってしまいます。
期待値通りに修正したいのですが、どのように修正したらいいでしょうか?
ご教示お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2018/11/13 15:46

前と同じ質問だし、「期待値相違」がどう出てほしいところがどうなっているのかわからないし
m.ts10806

2018/11/13 20:53

「うまくできてない」だけだと、何をゴールとしていて何が起きているのか誰にもわかりません。何をゴールとしているか分からないと的確な回答にはなりません。タイトルは要件を簡潔に書くにとどめ、質問内容を充実させてください
ssssa

2018/11/19 15:31

mtsさん:ご指摘能の通りでございます。ゴールは拡張For文ではなくfor文とif文を使ってコードを書きたいです。
ssssa

2018/11/19 15:46

swordoneさん:答えにはたどりついてますがコードの詳細についての質問でした。わかりづらい質問内容ですみません。
ssssa

2018/11/19 15:49

swordoneさん:また答えは、0~100の値を出力:50 0~100の値を出力:43 0~100の値を出力:2 0~100の値を出力:12 0~100の値を出力:34 0~100の値を出力:24 0~100の値を出力:8 0~100の値を出力:0 ← 0が出たら、出力を終える 一の位が0 : 50 一の位が1 : なし ← 該当する数値が無い場合は、「なし」と表示する。 一の位が2 : 2 一の位が3 : 43 一の位が4 : 24 34 ← 該当するものが複数存在する場合は、すべて表示する。 一の位が5 : なし 一の位が6 : なし 一の位が7 : なし 一の位が8 : 8 一の位が9 : なし このような期待値にしたいです。
swordone

2018/11/19 15:55

質問を編集して書いてください。ここに書かれても読みづらいです。
swordone

2018/11/19 15:56

あと、詳細と言っていますが、それこそ前回の質問に詳細にコードが載っていたはずですよ。
guest

回答2

0

ベストアンサー

for (int a = 0; i < list.size(); i++) {// listの中 if (a % 10 == i) {// 10で割り1の位を決める result += " " + a;// 1の位数決定 } }

とありますがArrayListに格納したデータを使いたい場合は list.get(i) などと書きます。
また、この書き方だと増える変数はiaa = 0のままとなるとなるため、結果が予想したもの違う結果になったと思います。

こんな感じでどうですか?

java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 6 ArrayList <Integer> numbers = new ArrayList<>(); 7 Random rand = new Random(); 8 9 while(true){ 10 int num = rand.nextInt(101); 11 System.out.println("0~100の値を出力:" + num);// 100まで表示 12 if (num == 0) {// 0の時 13 break;// 終了する 14 } 15 numbers.add(num);// リストに追加する 16 } 17 String result[] = new String[10]; 18 19 for(int i = 0; i < 10; i++){ 20 result[i] = ""; 21 for(int j = 0; j < numbers.size(); j++){ 22 if(numbers.get(j) % 10 == i){ 23 result[i] += Integer.toString(numbers.get(j)) + " "; 24 } 25 } 26 } 27 //結果表示 28 for(int i = 0; i < 10; i++){ 29 System.out.printf("1の位が%dのもの",i); 30 System.out.println(result[i]); 31 } 32 } 33} 34

話は変わりますが

毎回思うのですが、タイトルにすべて書いており 長すぎてわかりにくいです。
タイトルには簡潔な用件だけを書いて、具体的な内容を要件の欄に書いてください。
そっちの方が目標やエラー内容がわかるので より的確な回答が得られると思います。

投稿2018/11/14 03:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssssa

2018/11/19 16:00

アドバイスなどありがとうございます。次回具体的に書きます。わかりづらく、すみません。
guest

0

for (int a = 0; i < list.size(); i++) {// listの中

を考えなおしてみては?
i はその上の for で使っています。

投稿2018/11/13 17:32

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssssa

2018/11/19 16:04

アドバイスありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問