gpt4 book ai didi

java - 如何制作一个根据用户输入持续运行的循环

转载 作者:行者123 更新时间:2023-12-01 16:26:07 24 4
gpt4 key购买 nike

对于一个类,我必须制作一个简单的程序,允许用户输入包裹的重量,然后它告诉用户与该重量相关的运费。这不是作业所必需的,但我试图添加一个 do-while 循环,要求用户在循环末尾输入字母 y 如果他们想输入另一个重量,然后 while 部分测试 keepGoing 变量是否等于 y 重新开始循环。我不知道为什么,但无论用户输入什么,循环都不会重新启动。即使用户输入 y 程序也只是结束,请任何人帮忙。导入java.util.Scanner;

public class HwkChp4 {

static Scanner keyboard = new Scanner(System.in);

public static void main(String[] args) {

double packageWeight;
double underTwo = 1.10;
double twoToSix = 2.20;
double sixToTen = 3.70;
double overTen = 3.80;
String msg1 = "How much does the package weigh?";
String msg2 = "The shipping cost is ";
String keepGoing = "y";

packageWeight = getDouble(msg1);

do {
if(packageWeight <= 2) {
System.out.println(msg2 + "$" + underTwo);
}

if(packageWeight > 2 && packageWeight <= 6) {
System.out.println(msg2 + "$" + twoToSix);
}

if(packageWeight > 6 && packageWeight <= 10) {
System.out.println(msg2 + "$" + sixToTen);
}

if(packageWeight > 10) {
System.out.println(msg2 + "$" + overTen);
}
System.out.println("Please enter y if you would like to enter another weight");
System.out.println("otherwise please enter n");
keepGoing = keyboard.next();
} while (keepGoing == "y");

}

public static double getDouble(String msg1) {
double decimal;
System.out.println(msg1);
decimal = keyboard.nextFloat();
return decimal;
}
}

最佳答案

在 Java 中,只能使用基本数据类型(intcharboolean)上的 == 运算符来测试相等性 等,基本上都是以小写字母开头的数据类型)。字符串和其他数据类型的存储方式有很大不同,== 运算符调用变量的内存地址,而不是它们保存的数据。因此,您不能使用相等运算符,因为无论您如何努力,keepGoing 始终会存储在与 "y" 或您使用的任何其他变量不同的内存地址中。会尝试将其设置为。 (当然,除非您故意将它们设置为相同的引用,但这总是会导致 true)。因此,您需要做的是使用 String 的内置 equals() 函数,如下所示:

TLDR:keepGoing == y 更改为 keepGoing.equals(y)

关于java - 如何制作一个根据用户输入持续运行的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62143234/

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