gpt4 book ai didi

java - 对我的 if 循环没有运行感到有点困惑?

转载 作者:行者123 更新时间:2023-12-02 09:39:47 25 4
gpt4 key购买 nike

我对编程和这个网站都很陌生,所以如果这个解释很笨拙,请耐心等待。

我正在自学 Java 编程,目前我只是编写一些通用的小代码来练习类和方法的使用。这是一个简单的代码,只需要输入姓名和年龄,以及是否有宠物即可练习。

当被问到这个人是否有宠物时,我有一个 if 循环,如果他们说是,它应该做一件事,而不是另一件事,对于其他任何事情,它应该或多或少地说“嘿,我不明白”那',然后继续。

但是,当我问“你有宠物吗”时,它甚至没有机会在直接进入循环的“其他”部分之前输入信息,我不确定为什么。

我对编程很陌生,所以我不知道该做什么或尝试什么。我知道我错过了一些愚蠢的东西,但我不知道是什么。

package practice;

import java.util.Scanner;

class Person {

String name;
int age;

void sayInfo() {

System.out.println("Hey, my name is " + name + " and I'm " + age + " years old!");

}

}

class Pet {
String name;
String type;
int age;
}

public class Methods {
public static void main(String args[]) {

Scanner input = new Scanner(System.in);
Person person1 = new Person();
String answer2;

do {

System.out.println("Please state your name:");
person1.name = input.nextLine();
System.out.println("Please state your age:");
person1.age = input.nextInt();

System.out.println("Do you have a pet?");
String answer = input.nextLine();

if (answer.equals("yes") || answer.equals("Yes")) {

Pet pet1 = new Pet();

System.out.println("What kind of pet?");
pet1.type = input.nextLine();
System.out.println("What is their name?");
pet1.name = input.nextLine();
System.out.println("How old are they?");
pet1.age = input.nextInt();

System.out.println(
"okay, so your name is " + person1.name + ", you're " + person1.age + "years old, and");
System.out.println(
"You have a " + pet1.type + " named " + pet1.name + " who is " + pet1.age + "years old.");

}

else if (answer.equals("no") || answer.equals("No")) {

System.out.println("okay, so your name is " + person1.name + ", you're " + person1.age
+ "years old, and you have no pet.");
}

else {

System.out.println("Sorry, I didn't understand your input there.");
}

System.out.println("Is your information correct?");
answer2 = input.nextLine();

} while (answer2.equals("no") || answer2.equals("No"));

System.out.println("Thank you for your information and time.");
}

}

当我运行该程序时,它会询问姓名和年龄,但是当它询问“你有宠物吗”时,它只是不允许我输入并直接转到该程序的其他部分循环,“抱歉,我不明白你的输入”,但程序的其余部分,询问信息是否正确,如果不正确则重新运行似乎工作正常,只是这一部分让我难住了。

最佳答案

这是因为 nextInt() 仅返回 int,但不会将扫描器前进到下一行,因此当您之后调用 nextLine() 时,它会返回数字后面的空字符串,但不返回问题的答案(是/否)。

试试这个:

System.out.println("Please state your name:");
person1.name = input.nextLine();

System.out.println("Please state your age:");
person1.age = input.nextInt();
input.nextLine(); // Advance to the next line

System.out.println("Do you have a pet?");
String answer = input.nextLine();

或者在读取行时使用input.next()而不是.nextLine()

关于java - 对我的 if 循环没有运行感到有点困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57194053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com