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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

解決済

多次元リストの検索、要素の取り出しについて

friday_13
friday_13

総合スコア0

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

3回答

0評価

1クリップ

82閲覧

投稿2018/06/18 02:43

Java

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; class ArrayTest { public static void main(String[] args) throws IOException { System.out.println("----------------------------------------------------"); System.out.println("メインメニュー"); System.out.println("1.学生情報新規登録 (*)"); System.out.println("2.学生情報検索 (*)"); System.out.println("3.学生情報削除"); System.out.println("4.学生情報更新"); System.out.println("5.閉じる (*)"); System.out.println("----------------------------------------------------"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("番号を選択してください。"); String str = br.readLine(); int res = Integer.parseInt(str); switch(res) { case 1:InputT.input(); main(args); break; case 2:SearchT.search(); main(args); break; case 3:DeleteT.delete(); main(args); break; case 4:/*Updata.updata();*/ main(args); break; case 5: System.out.println("終了します。"); System.exit(0); break; default: System.out.println("入力された番号に該当するメニューがありません。"); main(args); break; } } } //リストの作成 class SL{ static ArrayList listall; static ArrayList list; // 多次元リストの宣言 static ArrayList<ArrayList<String>> person = new ArrayList<ArrayList<String>>(); public static void create() throws IOException { ArrayList<String> ps = new ArrayList<>(4); String id = "ID"; String name = "NAME"; String birth = "BIRTHDAY"; String adr = "ADDRESS"; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i = 0; i < 1; i++) { System.out.println("IDを入力してください。"); id = br.readLine(); ps.add(id); System.out.println("\n名前を入力してください。"); name = br.readLine(); ps.add(name); System.out.println("\n生年月日を入力してください。(例:XXXX/XX/XX)"); birth = br.readLine(); ps.add(birth); System.out.println("\n住所を入力してください。"); adr = br.readLine(); ps.add(adr); } person.add(ps); listall = person; list = ps; } public ArrayList getlist1() { SL sl = new SL(); return sl.listall; } public ArrayList getlist2() { SL sl = new SL(); return sl.list; } } //登録 class InputT{ static void input() throws IOException { //学生情報 System.out.println("\n学生情報の登録をします。"); SL sl = new SL(); SL.create(); ArrayList listZ = sl.getlist2(); System.out.println("\n\n" + listZ); System.out.println("\n" + listZ.get(1) + "さんの情報を登録しました。\n"); } } //検索 class SearchT{ static void search() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); SL b = new SL(); ArrayList listX = b.getlist1(); ArrayList listZ = b.getlist2(); System.out.println("検索する文字列を選択してください。"); String moji = br.readLine(); try{ System.out.println(((ArrayList) listX.get(0)).get(1)); System.out.println(moji + "のインデックスは" + listX.indexOf(moji) + "です。"); System.out.println(listX); System.out.println(listZ); System.out.println("要素数 = " + listX.size()); for(Object s:listX) { System.out.println(s); } } catch(java.lang.NullPointerException e){ System.out.println("入力した文字列は登録されていません。"); System.out.println("メニューに戻ります。"); } } } //削除 class DeleteT{ static void delete() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); SL b = new SL(); ArrayList listX = b.getlist1(); ArrayList listZ = b.getlist2(); System.out.println("削除する文字列を選択してください。"); String moji = br.readLine(); try{ if (listZ.contains(moji)); listZ.remove(moji); System.out.println(moji + "を削除しました。"); System.out.println(listX); } catch(java.lang.NullPointerException e){ System.out.println("入力した文字列は登録されていません。"); System.out.println("メニューに戻ります。"); } } } /*//更新 class Updata{ static void updata() throws IOException { }*/

Javaを勉強中の者です。
上記ソースでキーボードから値を受け入れる形式の多次元リストを制作しているのですが、格納した値を検索または削除する際、あらかじめpersonリストの中に格納しておいた複数のpsリストのインデックスが一部で最後に格納した値の物以外破棄されてしまっているようです。
具体例を挙げますと、あらかじめpsリストに[11,22,33,44]、[55,66,77,88]と値を格納し、それをさらにpersonリストにまとめて格納しています。この時点でpersonリストを出力すると[[11,22,33,44],[55,66,77,88]]となっています。
その後、indexOfで22のインデックスを調べるとperson、psリストのどちらからも-1、つまり格納されていないと返ってきます。しかし、personリストにget(0).get(1)で要素の取得をさせるとちゃんと22が返ってきます。
この場合、古い方([11,22,33,44])のインデックスを保持したままにして検索、削除が出来るようにするにはどこを修正すればよいのでしょうか。アドバイスの方お願い致します。

開発環境:Eclipse 4.7 Oxygen 3a(32bit版 Full Edition)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。