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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

Q&A

解決済

4回答

7771閲覧

Listやfor文を使って逆順表示させたいです。

ssssa

総合スコア39

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

0グッド

0クリップ

投稿2018/08/29 17:18

0から10までの乱数を発生させてその値を表示し、0が出たら、それまで入力した整数を逆から表示するプログラムを作りなさい。エラーが解決できずどなたかご教示ください。
下記がコードになります。

私の書いたコードは

Java

1public static void main(String[] args) { 2 List<Integer> evens = new ArrayList<Integer>(); 3 List<Integer> odds = new ArrayList<Integer>(); 4 List<List<Integer>> lists = Arrays.asList(evens, odds); 5 while (true) { 6 Random rnd = new Random(); 7 int v = rnd.nextInt(10); 8 System.out.println("0から10の値を出力:" + v); 9 if (v == 0) { 10 break; 11 } 12 lists.get(v % 2).add(v); 13 } 14 for (int list = 10; list >= 0; list--) { 15 List<Integer> ls = null; 16 System.out.println(Arrays.toString(ls.toArray())); 17 } 18 } 19} 20 21

エラーの内容は下記になります。
Exception in thread "main" 0から10の値を出力:4
0から10の値を出力:0
java.lang.NullPointerException

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

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

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

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

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

m.ts10806

2018/08/30 00:41

何かの課題や宿題でしょうか。であれば自分でやらないと意味がありませんし、これまで学んできたことでカバーできる範囲ではないでしょうか。宿題代行のサイトではありません。
guest

回答4

0

java

1 for (int list = 10; list >= 0; list--) { 2 List<Integer> ls = null; 3 System.out.println(Arrays.toString(ls.toArray())); 4 }

nullに対してtoArray()しようとしているせいです。
「何の中身を」出力しようとしているのか、もう一度考えてください。

投稿2018/08/29 17:30

swordone

総合スコア20651

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

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

ssssa

2018/09/03 16:08

ありがとうございます。 参考にさせていただきます。
guest

0

.numbersというArrayListに0~10の乱数を格納させます。
.do~while文で0になるまでループさせます。
.Collections.reverseで反転させ、拡張for文で表示しました。

java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args){ 5 6 Random rand = new Random(); 7 List<Integer> numbers = new ArrayList<Integer>(); 8 int n; 9 do{ 10 n = rand.nextInt(10); 11 numbers.add(n); 12 System.out.println(n); 13 }while(n != 0); 14 15 Collections.reverse(numbers); 16 System.out.println("--逆順にして表示--"); 17 for(int number : numbers){ 18 19 System.out.println(number); 20 21 } 22 } 23}

投稿2018/08/30 04:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ssssa

2018/09/03 16:48

ご丁寧な回答ありがとうございます。参考にさせていただきます。
guest

0

ベストアンサー

やりたいことが全データの逆順ソート出力だと思いましたので実装してみました。
参考になればと思います。

要点:
①エラーは他の方の説明の通りnullを出力しようとしているからです。
②listsが入れ子になっているのでそのままでは出力出来ませんので1つのリストlsに統合します。
③lsを逆順ソートをかけます。
④正順で出力します。

補足:
lsを正順ソートかけてfor分で逆順出力でも出来ます。

出力結果:
イメージ説明

java

1 2import java.util.ArrayList; 3import java.util.Arrays; 4import java.util.Collections; 5import java.util.List; 6import java.util.Random; 7 8public class memo103 { 9 10 public static void main(String[] args) { 11 12 List<Integer> evens = new ArrayList<Integer>(); 13 List<Integer> odds = new ArrayList<Integer>(); 14 List<List<Integer>> lists = Arrays.asList(evens, odds); 15 16 while (true) { 17 Random rnd = new Random(); 18 int v = rnd.nextInt(10); 19 System.out.println("0から10の値を出力:" + v); 20 if (v == 0) { 21 break; 22 } 23 lists.get(v % 2).add(v); 24 } 25 26 //以下回答 27 List<Integer> ls = lists.get(0); 28 ls.addAll(lists.get(1)); 29 ls.sort(Collections.reverseOrder()); 30 31 for (int list =0; list < ls.size() ; list++) { 32 System.out.println(ls.get(list)); 33 } 34 35 } 36}

投稿2018/08/30 01:52

編集2018/08/30 01:55
opyon

総合スコア1009

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

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

退会済みユーザー

退会済みユーザー

2018/08/30 04:07

import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Random; -> import java.util.*;と一つにまとめることもできます。
退会済みユーザー

退会済みユーザー

2018/08/30 04:09 編集

この問題って逆順ソートでしょうか? ただ、0が出るまで出てきた乱数を逆に表示するだけだと思うんですが .....
opyon

2018/08/30 05:16

>0が出たら、それまで入力した整数を逆から表示するプログラムを作りなさい。 確かにソートは不要かもしれませんね。 例えば123と出たら321と出力なのかもしれません。 全て最初から作り直し1つのリストにした方が簡単なことはコード見れば分かります。 リストをわざわざ奇数偶数で分けて入れ子にしてあるので何かしらの問題で取り出し方が分からないのかなと推察しました。 なるべく元のコードを崩さずにその取り出し方だけを書いてあげたほうが良いのかなと思いました。 何の制約もなければリストに追加し逆順で出力するだけです。
ssssa

2018/09/03 16:51

ご丁寧な回答ありがとうございます。 とても分かりやすく説明していただきありがとうございます。 模範解答としましては 0~10の値を出力:2 0~10の値を出力:9 0~10の値を出力:1 0~10の値を出力:7 0~10の値を出力:4 0~10の値を出力:3 0~10の値を出力:1 0~10の値を出力:0 ← 0が出たら、出力を終える 1 3 4 7 1 9 2 このように表示顔できればいいようです。 質問がわかりづらく申し訳ありませんでした。
ssssa

2018/09/03 16:52

このように表示できればいいようです。 質問がわかりづらく申し訳ありませんでした。
guest

0

java

1import java.util.ArrayList; 2import java.util.List; 3import java.util.Random; 4 5public class ProbexXXX { 6 public static void main(String[] args) { 7 List<Integer> list = new ArrayList<Integer>(); 8 while (true) { 9 Random rnd = new Random(); 10 int v = rnd.nextInt(10); 11 System.out.println("0から10の値を出力:" + v); 12 if (v == 0) { 13 break; 14 } 15 list.add(v); 16 } 17 for (int i = list.size() - 1; i >= 0; i--) { 18 System.out.println(list.get(i)); 19 } 20 } 21}

List の API 仕様も調査してみてください。

参考情報

  • API リファレンス インタフェースList<E>

https://docs.oracle.com/javase/jp/9/docs/api/java/util/List.html

  • Listを逆順にループしたい

https://teratail.com/questions/433

投稿2018/08/29 21:33

katoy

総合スコア22324

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

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

ssssa

2018/09/03 16:09

お返事が遅れましてすみません。 ありがとうございます。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問