Java初心者です
こちらの問題をjavaで全文書くとどうなるのかお願いします
テストの得点を入力して,成績(優,良,可,不可)を表示するプログラムを作 成せよ
成績は,得点に応じて,以下のルールにしたがって決定する
ただ し,以下のメソッド getGrade を定義して,main メソッドでは,このメソッド から返却されたグレードに応じて,成績を表示するものする
90 点以上 秀
80 点以上 90 点未満 優
70 点以上 80 点未満 良
60 点以上 70 点未満 可
60 点未満 不可
int getGrade(int score)
仮引数に指定されたテストの得点に対応するグレードの値を返却値として 戻す.得点とグレードの対応は,以下の通りである.
得点 グレード
90 点以上 4
80 点以上 90点未満 3
70 点以上 80点未満 2
60 点以上 70点未満 1
60点未満 0
[実行例]
テストの点数を入力してください 77
良
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
10か月も前の質問じゃ、質問者はもう見ていないでしょう。
Java
1class Test { 2 static int getGrade(int x) { return x/60*(x/10-5)-x/100; } 3 public static void main(String[]args) { 4 System.out.print("テストの点数を入力してください "); 5 System.out.println(new String[]{"不可","可","良","優","秀"} 6 [getGrade(new java.util.Scanner(System.in).nextInt())]); 7 } 8}
110点以上は入力しないでください。
追記
解決済になりましたね。
こんな割り算を悪用したコードでよいのかな。それなら、さらに、
Java
1class Test { 2 static int getGrade(int x) { return x/60*(x/10-5)-x/100; } 3 public static void main(String[]args) { 4 System.out.print("テストの点数を入力してください "); 5 int g = getGrade(new java.util.Scanner(System.in).nextInt()); 6 System.out.println("不可良優秀".substring(g, g + 1 + (5 - g)/5)); 7 } 8}
でも、割り算は遅いから控えようというのなら、
Java
1class Test { 2 static int getGrade(int x) { return x<60 ? 0 : x>=90 ? 4 : x/10 - 5; } 3 public static void main(String[]args) { 4 System.out.print("テストの点数を入力してください "); 5 int g = getGrade(new java.util.Scanner(System.in).nextInt()); 6 System.out.println("不可良優秀".charAt(g) + (g>0 ? "" : "可")); 7 } 8}
投稿2020/08/04 15:06
編集2020/08/05 04:15総合スコア8224
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Java
1import java.util.Scanner; 2 3public class Q216581 { 4 public static String[] GRADES = { "不可", "可", "良", "優", "秀" }; 5 6 public static void main(String[] args) throws Exception { 7 try (var sc = new Scanner(System.in)) { 8 System.out.print("テストの点数を入力してください "); 9 System.out.flush(); 10 System.out.println(GRADES[getGrade(sc.nextInt())]); 11 } 12 } 13 14 public static int getGrade(int score) { 15 return Math.min(Math.max((score / 10) - 5, 0), 4); 16 } 17}
投稿2020/08/04 13:50
総合スコア21737
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
繰り返して判定できるようにしました。またエラー処理も考慮してみました。
java
1package teratail; 2 3import java.io.IOException; 4import java.util.InputMismatchException; 5import java.util.Scanner; 6 7public class HelloWorld { 8 public static final String[] GRADE_NAMES = { "不可", "可", "良", "優", "秀" }; 9 public static final int[] GRADE_MAX_SCORES = { 59, 69, 79, 89, 100 }; 10 11 public static void main(String[] args) throws IOException { 12 13 @SuppressWarnings("resource") 14 Scanner sc = new Scanner(System.in); 15 while (true) { 16 try { 17 System.out.print("テストの点数を入力してください "); 18 if (!sc.hasNext()) { 19 break; 20 } 21 int score = sc.nextInt(); 22 System.out.println(GRADE_NAMES[getGrade(score)]); 23 } catch (IllegalArgumentException e) { 24 System.out.println(e); 25 } catch (InputMismatchException e) { 26 System.out.println(e); 27 sc.nextLine(); 28 } 29 } 30 System.out.print("\n終了"); 31 } 32 33 private static int getGrade(int score) { 34 if (score < 0 || 100 < score) { 35 throw new IllegalArgumentException("判定できません。数値:" + score); 36 } 37 for (int i = 0; i < GRADE_MAX_SCORES.length; i++) { 38 if (score <= GRADE_MAX_SCORES[i]) { 39 return i; 40 } 41 } 42 throw new IllegalArgumentException("判定できません。数値:" + score); 43 } 44}
投稿2020/08/06 22:58
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。