当前位置: 首页 > 知识库问答 >
问题:

为什么我不能在if语句后输入信息?没有错误显示

华宇
2023-03-14

如何让程序在if语句后使用扫描器请求输入?

import java.util.Scanner;

public class App1 {

    public static void main(String[] Args) {

        Scanner keyboard = new Scanner(System.in);

        String gender;
        String fName;
        String lName;
        int age;
        String female = "F";
        String male = "M";
        String a = "";
        String gettingMarried = "y";
        String notGettingMarried = "n";

        System.out.println("What is your gender (M or F)");
        gender = keyboard.nextLine();
        System.out.println("What is your first name?");
        fName = keyboard.nextLine();
        System.out.println("What is your last name?");
        lName = keyboard.nextLine();
        System.out.println("Age:");
        age = keyboard.nextInt();
        System.out.println();

        if (gender.equals(female) && age >= 20) {
            System.out.println("Are you married " + fName + " (y or n?)");
            a = keyboard.nextLine();

        } else if (gender.equals(male) && age >= 20) {
            System.out.println("Are you married" + fName + "(y or n?)");
            a = keyboard.nextLine();
        }

    }
}

共有1个答案

松钟展
2023-03-14

这是因为您使用的nextint()只接受int值,而不是整行。当您再次尝试使用keyboard.nextline()读取您正在捕获的内容时,您将在其中放置int的行的其余句子。

if语句前的system.out.println();更改为keyboard.nextline();

编辑:如果您想要关于为什么必须在keyboard.nextline();之后放置keyboard.nextint()的更详细的解释,您可以参考我在另一个问题中的回答:为什么扫描仪输入不工作?

 类似资料:
  • 首先,我发现了另外两条有类似问题的线索。问题在于,他们没有为字符串使用正确的等号,也没有为他们的特定问题正确设置if语句的格式。 在我的任务中,我需要创建一个名为“猪”的游戏,玩家与计算机对决,在掷骰子时先获得100分。如果玩家在一个回合中掷1,他们不会得到额外的分数。如果玩家掷两个1,那么他们将失去所有分数。我还没有对电脑的回合进行编码,只是专注于玩家。请告诉我我做错了什么。提前非常感谢。 我的

  • 我正在做一个任务,我必须创建一个“理想体重”计算器(有点像BMI计算器)。用户应该输入他们的身高、姓名和他们希望接收答案的测量系统。 IE;测量系统=(M)etric或(I)mperial,其中用户输入一个“M”或一个“I”。这意味着他们输入的高度必须对应于他们选择的单位。 IE;身高=1.5米或59英寸(除了他们不写单位,只写数字)。 我试图修复可能存在的任何语法错误,目前不再有任何错误,但当我

  • 我还没有看到这个问题,这让我很惊讶。 以下内容不会编译: 然而,将此更改为强制转换对象并将其引用存储在条件语句之外的新对象中,可以解决此问题: 我的问题是,为什么Java中不允许这种行为?(特别是Java 5) 编辑:啊哈!谢谢大家。该死的现代IDE给出了模糊的错误消息。我已经开始打折了,这一次对我没有任何好处。(Netbeans警告我缺少括号和分号…)

  • 问题内容: 以下Java代码无法编译。 为什么?在没有先声明的情况下,没有代码路径可导致程序将1分配给该路径。 我想到的范围可能仅限于第一条陈述,但后来我不明白为什么。如果我真的不想不必要地声明以提高性能怎么办?我不喜欢声明后不使用变量。 (您可能想争论一下,我不可以在第二条语句中简单地声明b ,在这种情况下,请想象一下它可能在其他地方处于循环中。) 问题答案: 为什么?如果没有先声明,没有代码路

  • 问题内容: 我不小心写了一个Java语句,结尾有两个分号。Java编译器不显示任何错误,它可以运行。 码: 出于学习目的,我尝试在分号后添加不同的字符,并且Java编译器已将编译时错误显示为 令牌“)”上的语法错误,请删除此令牌 。 这个说法: 为什么Java将分号和其他字符视为不同? 问题答案: 因为双分号不会被视为双分号,而是会被视为分号和空语句。空的语句不执行任何操作,这不是错误。

  • 我制作了这个简单的GUI程序,它可以计算特定字符序列的元音和辅音。计数器还可以,但是我对if-else语句有一个问题,当那个字符既不是元音也不是辅音时,我必须显示一条消息...代码如下: 它看起来是这样的: 我输入了一个没有任何特殊字符或数字的字符“序列”。但它仍然显示消息,其中它有元音和辅音以外的其他字符。if-else语句有问题吗?感谢您的帮助:)