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

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

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

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

Q&A

解決済

2回答

751閲覧

javaで1~9を表示するリストが表示されず困っています。

blotors

総合スコア4

Java

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

0グッド

1クリップ

投稿2021/09/15 15:19

プログラムは実行できるのですが、何も表示されず解決法がわかりません。ご教示願います。

1 2 3 4 5 6 7 8 9 と表示したいです。

以下、Nodeクラスからオブジェクトを作成しています。

package NodeExec;

public class Node {

int data; Node next; Node (int data,Node next) { this.data = data; this.next = next; }

}

以下、問題のプログラムです

package NodeExec;

public class NodeLoop {

public static void main(String[] args) { int i, DUMMY = 0; Node list = new Node(DUMMY, null); for (i = 1; i <= 9; i++) { list.next = new Node(i, null); list = list.next; } for (list = list.next; list != null; list = list.next) { System.out.print(" " + list.data); } System.out.println(); }

}

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

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

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

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

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

hoshi-takanori

2021/09/15 15:56

変数 list が最後の Node を指してるからでは。
guest

回答2

0

for (i = 1; i <= 9; i++) {

list.next = new Node(i, null);
list = list.next;
}

最初のforの後、listに入っているのは、最後尾のNodeです。

for (list = list.next; list != null; list = list.next) {

System.out.print(" " + list.data);
}

list=list.next
で、最後尾のNodeの次(=null)が、listにセットされます。
list != null
で、listがnullでない間回りますが、すぐ上でセットした様に、nullなので、即終了します。

ループの前に、listを先頭のNodeに戻しておく必要があります。
逆には辿れないので、別の場所に頭の位置を保存しておいて下さい。

投稿2021/09/15 15:55

編集2021/09/15 15:58
amiya

総合スコア1218

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

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

blotors

2021/09/16 11:11

ありがとうございます。
guest

0

ベストアンサー

プログラムは実行できるのですが、何も表示されず

java

1for (list = list.next; list != null; list = list.next) {

ここの for 文の直後の list.next ですが、1~9 のループの後の状態である為、null になっています。その為、何も表示せずに終了しているかと思います。
以下、データのイメージです。

// data next // [ 0, (A)] // A [ 1, (B)] // B [ 2, (C)] // C [ 3, (D)] // D [ 4, (E)] // E [ 5, (F)] // F [ 6, (G)] // G [ 7, (H)] // H [ 8, (I)] // I [ 9, null] <== list.next が null を指している

先頭からループするようにしてあげれば 1 ~ 9 が表示されるかと思いますす。

java

1public static void main(String[] args) { 2 3 int i, DUMMY = 0; 4 Node list = new Node(DUMMY, null); 5 Node first = list; // 先頭の Node を保持 6 7 for (i = 1; i <= 9; i++) { 8 list.next = new Node(i, null); 9 list = list.next; 10 } 11 12 // 先頭からループを開始 13 for (list = first.next; list != null; list = list.next) { 14 System.out.print(" " + list.data); 15 } 16 System.out.println(); 17}

■ 実行結果

1 2 3 4 5 6 7 8 9

投稿2021/09/15 16:00

cx20

総合スコア4633

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問