Javaの条件分岐がうまくいかないです。


Javaを勉強中の者です。得点によってメッセージの内容を変える方法 https://joyplot.com/documents/2017/03/18/java-if-condition/ を自分でも試したいと思い、以下のコードをEclipseで入れました。

------------------------------
package package testprogramm;
public class Sample {
public static void main(String args[]) {

System.out.print("得点を入力してください: ");

Scanner scan = new testprogramme(System.in);

// キーボードから整数の入力を受け取る
int score = scan.nextInt();

// キーボードからの入力を終了する
scan.close();

// 60点未満と60点以上で処理を分ける
if (score >= 60) {
System.out.println("おめでとう! 合格です");
} else {
System.out.println("残念。不合格です");
}
}
}
------------------------------
すると「 Scanner scan = new testprogramme(System.in);」のところでエラーが出まして。

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2018/10/18 20:40:48
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:moon-fondu

それでも実行しますと、

------------------

Exception in thread "main" java.lang.Error: Unresolved compilation problems:

Scanner を型に解決できません

コンストラクター testprogramme(InputStream) は未定義です

at testprogramm.Sample.main(Sample.java:7)

------------------

というエラー文が出てきてしまいました。

このエラーが出てしまう原因と、どこをどう修正すると正しくプログラムが動くか、お教えいただけないでしょうか。

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

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント400pt
Scanner scan = new testprogramme(System.in);

↑は、こうです。

Scanner scan = new Scanner(System.in);

もし、質問にあるコードが全てのコードだとしたら、以下も必要です。

import java.util.Scanner;
他1件のコメントを見る
id:a-kuma3

こんな感じでどうでしょう。

package package testprogramm;

import java.util.Scanner;

public class Sample {
    public static void main(String args[]) {

        Scanner scan = new Scanner(System.in);

        while (true) {
            System.out.print("得点を入力してください: ");

            // キーボードから整数の入力を受け取る
            int score = scan.nextInt();

            if (score > 100) {
                System.out.println("点数が範囲外です。得点を再度入力してください");
            } else if (score >= 60) {
                System.out.println("おめでとう! 合格です");
            } else if (score < 0) {
                break;
            } else {
                System.out.println("残念。不合格です");
            }
        }

        // キーボードからの入力を終了する
        scan.close();

    }
}

Scanner では、ESCキーを取れないので、負の値を入れたら while を脱出するように書いてます。

2018/10/17 18:09:09
id:moon-fondu

ありがとうございます!うまくいきました♪

2018/10/18 20:40:26

その他の回答1件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント400pt
Scanner scan = new testprogramme(System.in);

↑は、こうです。

Scanner scan = new Scanner(System.in);

もし、質問にあるコードが全てのコードだとしたら、以下も必要です。

import java.util.Scanner;
他1件のコメントを見る
id:a-kuma3

こんな感じでどうでしょう。

package package testprogramm;

import java.util.Scanner;

public class Sample {
    public static void main(String args[]) {

        Scanner scan = new Scanner(System.in);

        while (true) {
            System.out.print("得点を入力してください: ");

            // キーボードから整数の入力を受け取る
            int score = scan.nextInt();

            if (score > 100) {
                System.out.println("点数が範囲外です。得点を再度入力してください");
            } else if (score >= 60) {
                System.out.println("おめでとう! 合格です");
            } else if (score < 0) {
                break;
            } else {
                System.out.println("残念。不合格です");
            }
        }

        // キーボードからの入力を終了する
        scan.close();

    }
}

Scanner では、ESCキーを取れないので、負の値を入れたら while を脱出するように書いてます。

2018/10/17 18:09:09
id:moon-fondu

ありがとうございます!うまくいきました♪

2018/10/18 20:40:26
id:kaoato No.2

回答回数236ベストアンサー獲得回数86

ポイント200pt

Scanner scan = new testprogramme(System.in);

は、

Scanner scan = new Scanner(System.in);

の間違いでは?

あと、コメントにあるように
一番上の
import java.util.Scanner;

を付けたほうが良いのでは?



Scanner (Java Platform SE 8 )
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html

System (Java Platform SE 8 )
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/System.html

id:moon-fondu

ありがとうございます、リンク先も確認して勉強します!

2018/10/17 15:53:49

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません