0

問題は 7 番目のセクションで発生します。状態を読み取ることができず、代わりにelseステートメントを出力します。

import java.util.Scanner;

public class ifElseStatements
{
   public static Scanner in = new Scanner (System.in);

   public static void main (String[] args)
   {
      one();
      two();
      three();
      four();
      five();
      six();
      seven();
      eight();
   }
   public static void one()
   {
   System.out.print("grade: ");
   int number = in.nextInt();
   if(number > 70 && number <=100)
   {
      System.out.println("You're passing");
   }
   else
   {
      System.out.println("you're not passing!");
   }

   }  

   public static void two()
   {
      System.out.print("Number please");
      int b = in.nextInt();
      if(b <=50)
      {
      System.out.println("Go");
      }
      else
      {
      System.out.println("STOP");
      }
   }

   public static void three()
   {
      System.out.print("Integer please >");
      int c = in.nextInt();
      if(c%2 == 0)
      {
         System.out.println("Even");
      }
      else
      {
         System.out.println("odd");
      }
   }

   public static void four()
   {
      System.out.print("Integer please");
      int d = in.nextInt();
      if(d%5 == 0)
      {
         System.out.println("Multiple of 5");
      }
      else
      {
         System.out.println("Not a multiple of 5");
      }
   }

   public static void five()
   {
      System.out.print("number please");
      int e = in.nextInt();
      if(e< 10)
      {
         System.out.println("one digit");
      }
      else if(e>= 10 && e<100)
      {
         System.out.println("two digits");
      }
      else
      {
         System.out.println("three digits");
      }
   }

   public static void six()
   {
      System.out.print("Jersey Number");
      int f = in.nextInt();
      if(f == 12 || f == 80 || f == 71)
      {
         System.out.println("That number is retired from the seattle seahawks");
      }
      else
      {
         System.out.println("");
      }

   } 

   public static void seven()
   {
      System.out.print("a state is");
      String g = in.nextLine();
      if(g .equals ("Washington") || g .equals ("Oregon") || g .equals ("Idaho"))
      {
         System.out.println("That state is in the PNW!");
      }
      else
      {
         System.out.println("You should move to the PNW; Its great here!");
      }
   }  

   public static void eight()
   {
      System.out.print("drink size (SHORT, TALL, GRANDE, VENTI)");
      String h = in.nextLine();
      if(h .equals ("SHORT"))
      {
         System.out.println("8");
      }
      else if(h .equals ("TALL"))
      {
         System.out.println("12");
      }
      else if(h .equals ("GRANDE"))
      {
         System.out.println("16");
      }
      else if(h .equals ("VENTI"))
      {
         System.out.println("20");
      }
   }


}

コードを実行するとこんな感じ。

grade: 70

you're not passing!

Number please12

Go

Integer please >30

Even

Integer please15

Multiple of 5

number please33

two digits

Jersey Number12

That number is retired from the seattle seahawks

a state isYou should move to the PNW; Its great here!

drink size (SHORT, TALL, GRANDE, VENTI)TALL

12 oz
4

2 に答える 2

2

前のステップはin.nextInt()、次の int を読み取るだけで、EOL 文字を消費しません。そのため、step7 メソッドは次の行を読み取り、前のステップで消費されていない EOL を消費します。

in.nextLine()整数だけでなく、EOL 文字を使用するには、手順 6 に追加する必要があります。

于 2013-10-27T18:59:41.543 に答える
0

Scanner.nextInt()これは、との両方を使用した場合に発生する一般的な問題でありScanner.nextLine()、常に希望どおりに機能するとは限りません。これについての説明は、 JavaDocを参照してスキャナーの仕組みを理解することで見つけることができますが、単純な修正では、インスタンスを置き換えるだけです。

in.nextInt();

Integer.parseInt(in.nextLine());
于 2013-10-27T18:59:49.910 に答える