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