跳过代码

时间:2013-10-27 18:51:44

标签: java

问题出现在第七部分。它不允许我读取状态而是打印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

2 个答案:

答案 0 :(得分:2)

上一步只执行in.nextInt(),它读取下一个int,但不使用EOL字符。因此,step7方法读取下一行,并使用上一步未消耗的EOL。

您应该在步骤6中添加in.nextLine()以使用EOL字符,而不仅仅是整数。

答案 1 :(得分:0)

这是您使用Scanner.nextInt()Scanner.nextLine()时遇到的常见问题,但这并不总是如您所愿。您可以通过JavaDoc查看扫描仪的工作原理来找到解释,但是对于一个简单的修复,只需替换实例

in.nextInt();

Integer.parseInt(in.nextLine());