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

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

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

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

Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

4996閲覧

Java での読み飛ばしの使い方を詳しく教えてください。

Redwolf

総合スコア3

標準入力

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

Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2020/08/31 14:41

###Java での読み飛ばしの使い方を詳しく教えてください。

Javaの学習でランダムに標準入力される数値を改行して表示するプログラムを作っています。

教えて欲しい箇所

for文のあとのsc.next();※読み飛ばしについて ∟この読み飛ばしをする意味や、他にどんな時に活用するのか具体例を教えてください。いまいちどんなタイミングで使用したり、あるいはこの読み飛ばしがなければいけないのか理解できていません。

該当のソースコード

import java.util.*;

public class Main {
public static void main(String[] args) {
// 自分の得意な言語で
// Let's チャレンジ!!

Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i =0; i < num ;i++ ){ sc.next();  //この読み飛ばしをする意味や、他にどんな時に活用するのか具体例を教えてください。いまいちどんなタイミングで使用したり、あるいはこの読み飛ばしがなければいけないのか理解できていません。 System.out.println(sc.nextInt()); } }

}

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/08/31 15:00

何かに読み飛ばししろって書いてあったんですか?
Redwolf

2020/08/31 15:03

もしかして”読み飛ばしの”の意味間違えて覚えてますかね? てっきり上記に記載しているsc.next();が読み飛ばしだと思っていたのですが、違いますかね?
退会済みユーザー

退会済みユーザー

2020/08/31 15:14

そういう意味で聞いているのではなくて、 ご自身でsc.next();を書いていて何の意味があるのか尋ねているのか、 どこかに書いてあったものを拾ってきたがわからなかったのかを尋ねたかったです。 後者ならちゃんと出典元書かないとダメです。
Redwolf

2020/08/31 15:20

そう言う事ですね、失礼致しました。 こちらはPaizaさんの動画学習(無料)の中のものですが、特にいわゆる読み飛ばしについて深く説明していなかったので、何の意味があるのか知りたかったです。
dodox86

2020/08/31 16:17

その動画の後の方で読み飛ばしをした部分を変えるとか追加するとか変わってくるのではないですか。その行のデータは今は使わないので、次の行へ行くために読み飛ばしをする程度の意味しか無いと思います。続く動画を全編見て、判断してみてください。
guest

回答2

0

//この読み飛ばしをする意味や、他にどんな時に活用するのか具体例を教えてください。いまいちどんなタイミングで使用したり、あるいはこの読み飛ばしがなければいけないのか理解できていません。

例えば、次のような入力があったとします。

text

13 2apple 23 3banana 50 4lemon 17

出力は

text

123 250 317

ランダムに標準入力される数値を

入力が 3 11 22 33 44 55 66 だったら

text

122 244 366

と出力されます。
sc.next() で読み飛ばす意味はコードを書いた人にしか分かりません。

投稿2020/09/01 00:39

kazuma-s

総合スコア8224

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

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

0

ベストアンサー

読み飛ばしが必要な理由は、その通り「不要な入力だから」としか言えません。
このプログラムにおいては、次のような動作になります。

Java

1Scanner sc = new Scanner(System.in); 2int num = sc.nextInt(); // 1行目を読み込み num に代入 3for (int i =0; i < num ;i++ ){ 4 sc.next(); // 2行目を読み飛ばします 5 System.out.println(sc.nextInt()); // 3行目を出力します 6} // 以降 4,6,8,10,12,14.... の偶数行を読み飛ばし、 5,7,9,11,13,15....の奇数行を出力

という動作になるのはわかるかと思います。

このソースコードだけで、想像を交えて言えることは

1行目は処理ループ回数である。
2行目の入力を読み飛ばし、3行目の入力を出力する。
これを1行目で与えられた処理ループ回数だけ実行せよ。

という意味になります。

いつ必要なのかでいうと「不要な入力があるとき」といえます。

投稿2020/08/31 16:50

t4c62096

総合スコア20

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

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

Redwolf

2020/08/31 22:20

ありがとうございます。 大変分かりやすく、イメージが湧きました!
kazuma-s

2020/08/31 23:54

next() と nextInt() と nextLine() の違いを理解していない間違った回答だと思います。
t4c62096

2020/09/01 01:09

おっと。next() でしたね。 nextLine() と勘違いしました。 実務上 Scanner は全く使わないので混同してしまいました。 訂正はお詳しそうな kazuma-s さんにお任せします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問