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

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

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

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

Q&A

2回答

851閲覧

java入門 式と演算子

nana1115

総合スコア6

Java

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

0グッド

0クリップ

投稿2018/06/05 14:59

スッキリわかるjava入門という本を使って勉強しています。
練習問題で不明点がでてきたので質問させていただきます。

<問題>
⓵画面にようこそ占いの館へと表示します。

⓶画面にあなたの名前を入力してくださいと表示します

③キーボードから1行の文字入力を受け付け、String型の変数nameに格納します

⓸画面にあなたの年齢を入力してくださいと表示します

⓹キーボードから1行の文字入力を受け付け、String型の変数agestringに格納します

⓺変数ageStringの内容をint型に変換し、int型の変数ageに代入します

⓻0から3までの乱数を生成し、int型の変数fortuneに代入します

⓼foutuneの数値をインクリメント演算子で1増やし、1から4の乱数にします。

⓽画面に占いの結果がでましたと表示します

⓾画面に 年齢 歳の 名前 さん、あなたの運気番号は 乱数 です。と表示します。

⑪画面に 1:大吉 2:中吉 3:吉 4:凶 と表示します

疑問点:
⓺の作業は必要なのでしょうか。
変数ageStringを、文字列として受け付けた後に、int型に変換していると思うのですが、
はじめから整数として受け付けた方が早い気がしたのですが。。

よろしくお願いいたします。

java

1public class Main { 2 public static void main(String[] args) { 3 System.out.println("ようこそ占いの館へ"); 4 System.out.println("あなたの名前を入力してください"); 5 String name = new java.util.Scanner(System.in).nextLine(); 6 System.out.println("あなたの年齢を入力してください"); 7 String ageString = new java.util.Scanner(System.in).nextLine(); 8 int age = Integer.parseInt(ageString); 9 int fortune = new java.util.Random().nextInt(4); 10 fortune++; 11 System.out.println("占いの結果がでました!"); 12 System.out.println(age + "歳の" + name + "さん、あなたの運気番号は" + fortune + "です"); 13 System.out.println("1: 大吉 2:中吉 3:吉 4: 凶"); 14 } 15} 16

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

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

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

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

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

guest

回答2

0

Scannerを使っているからそういうことは可能ですが、BufferedReaderを使っていたらいきなり整数で読み込むということは不可能です。
基本的にキーボードからの入力は文字列ですので(Scannerは各種の型に適応できるように変換してくれているだけ)、そういったことを意識させるための課題なのではないでしょうか。

投稿2018/06/05 15:11

swordone

総合スコア20649

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

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

0

.Integer.parseInt(age);を用いると文字列から変数に変換できることを示しているのだと思います。

また、nextIntで数値を読み込んだ際、改行文字が残ってしまっているためそのあとにsc.nextLine()の
入力を受け付けてくれないなどのエラーが生じる場合があります。
(今回は⑥以降入力するものがないのですが....)
そのため、一度文字列を受け取りそれを変数に変えているのだと思います。
こちらに似ている質問がありました。

ちなみに

受け取った文字列を一度に変数に変換するには以下の方法があります。

java

1int n = Integer.parseInt(sc.nextLine()); 2

コードを見て他に気になったこと

java

1String name = new java.util.Scanner(System.in).nextLine(); 2int fortune = new java.util.Random().nextInt(4);

とありますが、

java

1import java.util.Scanner; 2import java.util.Random;

を使うと

java

1Scanner sc = new Scanner(System.in); 2String name = sc.nextLine(); 3String age = Integer.parseInt(sc.nextLine()); 4Random rand = new Random(); 5int fortune = rand.nextInt(4);

と書くことができます。こうすることのメリットはscとrandは何度も使うことができ
毎回new java.util.Scanner(System.in).nextLine();と長い文字列を書かずに済むことです。
(import java.util.*;で2つをまとめることもできます。)

投稿2018/06/06 01:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問