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

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

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

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

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

8286閲覧

【Java】 配列の要素をキーボードで入力し、入力値の数だけ文字列を追加する方法が実現できない。

HSRRRJSJQP

総合スコア24

for

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

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/06/21 12:07

編集2020/06/21 13:03

状況

Java初心者の者で下記内容に挑戦しておりますが、以下の内容で詰まっております。
現状の考え方や解き方などご指摘を頂けないでしょうか。
何卒宜しくお願いいたします。

実現したいこと

キーボードで任意で入力した数値を配列の要素数として、
その数値の分だけ文字列を入力し表示させる。
全て入力させた後に、入力した配列のデータを全て表示させる。

(例) [ターミナル] ~%java Array1 //空の配列に追加する要素数 5 田中 中田 岡田 田町 町田 田村 田中 中田 岡田 田町 町田 田村

詰まっている箇所

任意で入力した数値分の文字列を空の配列に追加する方法。

現状のコード

import java.util.Scanner; public class Array2 { public static void main(String[] args) { //配列の要素数を決める任意に数字を入力する。 Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); //要素数が[number]のString型配列のnamesを定義する。 String[] names = new String[number]; //for文でnumberの分だけ文字列を追加する。 for(int i = 0; i <= number; i++) { Scanner name = new Scanner(System.in); names = name.nextLine(); } //空白行を出力する System.out.println(""); //配列を全て出力する for(int i = 0; i < names.length; i++) { System.out.println(names[i]); } } }

【コードのフロー】
①配列の要素数を決める任意の数字をint型のnumberに代入させる。
②空のString型配列のnameを定義し要素数をnumberにする。
③for文でnumberの数だけ空の配列に追加する文字列を入力させて、
入力した文字列の内容をターミナルに表示させる。
④(見やすくするために)空白の行を出力する。
⑤最後に追加した分の文字列の内容を表示させる。

エラー

words = word.nextLine();の箇所で下記エラーを受けております。

エラー: 不適合な型: StringをString[]に変換できません: words = word.nextLine();   ^ エラー1個

int型のnumberの分だけ入力させる方法を考えてみましたが、
ただ単に文字列を追加するScannerのやり方しか見出せませんでした。
そのため、「型が違うよ」とエラー指摘を受けております。

やってみたこととを踏まえて

Google検索を行いコード修正をいたしましたが、自己解決することができませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

  • 配列ではなく配列の要素にアクセスする必要があるため、names[i] = name.nextLine()にする必要があります。
  • このforの条件だと境界オーバーを起こすため、<=<にしてやる必要があります。

投稿2020/06/21 12:14

kuuote

総合スコア705

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

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

HSRRRJSJQP

2020/06/21 13:15

kuuote様 ご指摘ありがとうございます。 解決いたしました! 「配列の要素にアクセスする」の考えが足りていませんでした。 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問