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

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

ただいまの
回答率

90.34%

  • Java

    14465questions

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

java入門 式と演算子

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 181

nana1115

score 2

スッキリわかる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型に変換していると思うのですが、
はじめから整数として受け付けた方が早い気がしたのですが。。

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

 ちなみに

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

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

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

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


とありますが、

import java.util.Scanner;
import java.util.Random; 


を使うと

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


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Java

    14465questions

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