0

问题出现在第七节。它不允许我在某个状态下阅读,而是打印 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()在 step6 中添加以使用 EOL 字符,而不仅仅是整数。

于 2013-10-27T18:59:41.543 回答
0

这是由于您同时使用Scanner.nextInt()and导致的常见问题Scanner.nextLine(),它并不总是像您希望的那样工作。您可以通过JavaDoc找到对此的解释,以了解 Scanner 的工作原理,但对于简单的修复,只需替换

in.nextInt();

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