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

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

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

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

Q&A

1回答

2754閲覧

JAVAのScannerでint型とストリング型で配列を作る方法

rura

総合スコア70

Java

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

0グッド

0クリップ

投稿2021/11/20 01:22

編集2021/11/20 02:12

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Javaでスキャナーから入力された値をintやstringで配列を使って たくさんの要素を取得し、 for文に結果を取得しようとしています。 List<要素の型名> リスト名 = new ArrayList<要素の型名>();でとる方法とかあると思いますが、 やり方を忘れたので、どなたかご教授ください。

該当のソースコード

import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String line = sc.nextLine();     String logs[] = new String[line];//名前 int size = sc.nextInt();      int a[] = new int[line]//学籍番号 for(int i = 0;i<size;i++) { a [i] = sc.nextInt(); System.out.print("答え int " +a[i] + "\r\n"); }    for (int j = 0; j < a.lenght; j++){  old[j] = sc.nextLine();  System.out.println("答え String " + old[j]);    }     /*for (int i = 0; i < old.lenght; i++){    for (int j = 0; j < a.lenght; j++){ System.out.println("答え String " + old[i]); System.out.println("答え int " + int[j]);  }*/   } } }

試したこと

ここに問題に対して試したことを記載してください。 //実行時のエラー Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.Scanner.throwFor(Scanner.java:937) at java.base/java.util.Scanner.next(Scanner.java:1594) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt(Scanner.java:2212) at Main.main(Main.java:13) //配列の要素をすべて出したいでしたが、 //どうしても2番目以上しか取得できません

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
java

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

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

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

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

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

dodox86

2021/11/20 01:39

ご提示のコードはコンパイルエラーだらけのものです。その状況で > やり方を忘れたので、どなたかご教授ください。 これはちょっとあんまりです。
BeatStar

2021/11/20 02:35 編集

まず、ArrayListを使わずに配列を使う方法でもいいので、コードを完成させてください。今のコードではそもそもエラーになるはずです。 それさえできなければ質問者さんには早すぎます。足し算すら理解していないのに、微積分をやろうとしているとかみたいなものだし。
kazuma-s

2021/11/20 05:03

エラーメッセージを「発生している問題・エラーメッセージ」に書かずに「試してたこと」に書いて、何がしたいのかを「前提・実現したいこと」に書かずに「発生している問題・エラーメッセージ」に書くという非常識なことをしてますね。プログラミング以前の問題です。
jimbe

2021/11/20 07:52 編集

コードから仕様を推測しようにも役に立たなそうですので、どう入力したらどう出力したいのか、数パターンご提示願えますか。 それから、コードのマークダウンはコードにのみ使用してください。「発生している問題・エラーメッセージ」のように、日本語説明をコードのマークダウンに入れる意味はありません。
guest

回答1

0

このように解釈しました:
・1行に1つの値を入力する
・その値は String だったり int だったりする

この場合、sc.nextLine() を sc.next() に変更したほうが、無難なプログラムになると思います。

なお、入力に空白文字を含む場合は、(恐らく)意図通りに動かないと思いますので、
このように変更してみてください。

Scanner sc = new Scanner(System.in);

Scanner sc = new Scanner(System.in).useDelimiter("[\r\n]+");

サンプル:

Java

1 2import java.util.*; 3 4public class Main { 5 6 public static void main(String[] args) { 7 8 Scanner sc = new Scanner(System.in).useDelimiter("[\r\n]+"); 9 10 int size = sc.nextInt(); 11 12 String[] names = new String[size]; 13 int[] olds = new int[size]; 14 15 for (int i = 0; i < size; i ++) { 16 17 names[i] = sc.next(); 18 olds[i] = sc.nextInt(); 19 } 20 21 for (int i = 0; i < size; i ++) { 22 23 System.out.println("名前:String " + names[i]); 24 System.out.println("年齢:int " + olds[i]); 25 } 26 } 27}

入力:

2 全角 太郎 20 Hankaku Jiro 35

出力:

Output

1名前:String 全角 太郎 2年齢:int 20 3名前:String Hankaku Jiro 4年齢:int 35

投稿2021/11/21 11:44

momodx

総合スコア185

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問