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

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

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

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

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

Q&A

解決済

1回答

1502閲覧

標準入力の出力について(3行以上)

Redwolf

総合スコア3

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

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

0グッド

0クリップ

投稿2020/09/19 00:18

文字列A, B, Cが各行で入力されます。
文字列は標準入力から渡されます。

条件:3行での出力

入力例:
2000 500
aba 200 3a 3
ppppppppp

出力例:
2000 500
aba 200 3a 3
ppppppppp

起きている事:
Paizaの練習問題になりますが、回答が見れずに解決策がわかりません。

自身の入力コード:

Java

1import java.util.*; 2 3 4public class Main { 5 public static void main(String[] args) { 6 // 自分の得意な言語で 7 // Let's チャレンジ!! 8 9 Scanner sc = new Scanner(System.in); 10 String[] str = sc.next().split(" "); 11 for (int i =0; i < str.length ;i++ ){ 12 13 System.out.println(str[i]); 14 } 15 } 16 17 } 18

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

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

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

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

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

maisumakun

2020/09/19 00:37

> Paizaの練習問題になりますが 第三者に聞いて良い性質の問題でしょうか?
Redwolf

2020/09/19 00:40

定期的に入れ替わる問題であることと、かつ入力例も私が適当に生み出したものなので特定は出来ないものかと存じます。よろしくお願いいたします。
y_waiwai

2020/09/19 00:44

提示のコードではどういう不具合があるんでしょうか
coco_bauer

2020/09/19 02:45

質問に書かれている出力零は、「条件:3行での出力」を満たしています。 何が不満なんですか?
Redwolf

2020/09/19 03:11

この場合だと、出力結果が 2000 だけの表示になり、以降の 2000 500 aba 200 3a 3 ppppppppp までの出力に至らない事象が発生しています。
guest

回答1

0

ベストアンサー

入力例の "2000 500" が A で、"aba 200 3a 3" が B ですよね。
Scanner の next() は空白を含まない文字列を取得します。
最初の next() で取得するのは "2000" です。
空白が無いので split(" ") は無意味です。
空白を含んだ行を取得するのは getLine() です。
3行以上入力するなら、どこかで終了を検知しないといけません。
それには hasNextLine() が使えます。

ということで、次のように書けます。

Java

1import java.util.Scanner; 2 3class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 while (sc.hasNextLine()) 7 System.out.println(sc.nextLine()); 8 } 9}

キーボードからの入力の場合、入力の終了は
Linux では行頭で Ctrl-D、Windows では Ctrl-Z + Enter です。
また、キーボード入力では、入力と出力が混在しますが、それはよいでしょう。

投稿2020/09/19 06:27

kazuma-s

総合スコア8224

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

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

Redwolf

2020/09/19 08:40

Kazuma-sさん わかりやすい説明と共にコードもいただきありがとうございました。 無事解決することが出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問