如何根据用户输入进行循环播放>>

问题描述 投票:0回答:1

对于一个类,我必须编写一个简单的程序,允许用户输入包裹的重量,然后告诉用户与该重量相关的运费。这不是家庭作业所必需的,但我尝试添加一个do-while循环,该循环要求用户在循环末尾输入字母y(如果他们想输入其他权重),然后while部分测试是否keepKing变量等于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 do-while
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.