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

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

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

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

配列

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

Q&A

解決済

2回答

1068閲覧

配列に入力された文字を追加し返す処理

stzyang

総合スコア6

Java

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

配列

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

0グッド

0クリップ

投稿2020/09/08 22:45

編集2020/09/08 23:09

### 入力された文字を順次リストに追加していき空文字入力で中断して要素を返すプログラムを作っています
ArrayListにて配列リストを作成し、String text = Scnner(System.in).nextLine();にて文字を取得、addメソッドを使い取得した要素をリストに追加しています。

この際に空文字が入力された場合取得を中断し、直前まで入力された配列リストの文字と、配列の要素数を返す判定にisEmptyメソッドを使い判定しているのですが、思った通りに処理がされません

どの部分が間違っているか指摘していただけると幸いです

java

1import java.util.ArrayList; 2public class Main { 3 4 public static void main (String []args) { 5 //配列の作成 6 ArrayList<String> text = new ArrayList<String> (); 7 8 for(int j = 0; j < 10;) { 9 10 //文字の取得 11 System.out.println("文字を入力してください"); 12 String name = new java.util.Scanner(System.in).nextLine(); 13 14 //取得した文字が空文字か判定する 15 if (text.isEmpty() == false) { 16 17 //空文字じゃ無ければ追加する 18 text.add(name); 19 } else { 20 21 //空文字なら直前までの要素と要素数を返す 22 System.out.println(text); 23 System.out.println(text.size()); 24break; 25 26 27 } 28 } 29} 30}

別のやり方も試したもののやはり思い通りになりませんでした

java

1import java.util.ArrayList; 2import java.util.Scanner; 3public class Main { 4 5 public static void main (String []args) { 6 //1 7 8 //配列の作成 9 ArrayList<String> text = new ArrayList<String> (); 10 11 12 for (int i = 0;i<1;) { 13 14 //入力の受付 15 System.out.println("文字を入力してください"); 16 String name = new Scanner(System.in).nextLine(); 17 18 //入力チェック 19 if (name =="") { 20 System.out.println(text); 21 System.out.println(text.size()); 22 break; 23 } else { 24 for (String j: text) { 25 text.add(name); 26 } 27 } 28 29 30 } 31 32} 33}

自分の力不足は承知しています、アドバイスいただけると嬉しいです

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

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

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

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

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

y_waiwai

2020/09/08 23:03

思ったとおりに処理がされないとは、どういうふうに処理がされるんでしょうか。
stzyang

2020/09/08 23:13

空文字入力時、配列が表示されず”文字を入力してください”と二回表示されてしまいます 理想としては上記で書いた通り配列と配列要素数だけを返して終わることですが原因がわからず詰まってしまいました
guest

回答2

0

ベストアンサー

入力された文字列はnameに格納されているので、isEmptyの対象が間違っています。

Diff

1- if (text.isEmpty() == false) { 2+ if (name.isEmpty() == false) {

投稿2020/09/08 23:11

Daregada

総合スコア11990

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

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

stzyang

2020/09/08 23:21

なるほど!! 指摘されて改めてコードを見直しましたら 確かにnameに格納して、まだ追加していないtextに入力チェックしていました 素早い回答及び的確な指摘ありがとうございます!!
guest

0

text.isEmpty()は、textが空かどうか判定します。
nameが空であるか調べたいなら !name.equals("") あたりが妥当でしょう。

投稿2020/09/08 23:09

LouiS0616

総合スコア35660

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

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

stzyang

2020/09/08 23:26

素早い回答ありがとうございます textに追加されてる前提でtextに対して入力チェックしていました。 追加される前のチェックであることを忘れずに次に生かしたいと思います ご指摘ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問