java基础_为什么输入y仍然会跳出循环

import java.util.Scanner;

public class PayDemo{    
    public static void main(String [] args){
        //创建文件扫描器对象,System.in表示的是标准输入,可以从控制台读取数据(装饰者模式)
        Scanner sc = new Scanner(System.in);
        System.out.println("*****************************");
        System.out.println("请选择购买的商品编号:");
        System.out.println("1.Tshirt\t2.网球鞋\t3.网球拍");
        System.out.println("*****************************");
        
        double money = 0; //物品单价
        double oneMoney = 0;//单类物品总价
        double allMoney = 0;//物品总价
        double    discount = 0.8;//折扣
        String good;
        String continu="y";//循环控制条件
        boolean flag = true;
        while (continu=="y"){
            System.out.println("************"+continu);
            System.out.println("请输入商品编号");
            int number = sc.nextInt();
            System.out.println("请输入购买数量");
            int many = sc.nextInt();
            if (number == 1){
                money = 245.0;
                good = "Tshirt";
            }
            else if(number == 2){
                money = 570.0;
                good = "网球鞋";
            }else{
                money = 320.0;
                good = "网球拍";
            }
            oneMoney = many*money;//单类物品总价
            System.out.println(good+"¥:"+money+"\t数量:"+number+"\t合计:"+oneMoney);
            System.out.println("是否继续购买?");
            sc.nextLine();//把换行符读走
            continu = sc.nextLine();
            System.out.println("************"+continu);
            allMoney = allMoney + oneMoney;//累加
        }
        System.out.println("折扣:"+discount);
        System.out.println("应支付金额:"+allMoney);
        System.out.println("实付金额:");
        while(flag){
            int coustom = sc.nextInt();
            if (allMoney>coustom){
                System.out.println("您输入的金额小于应付金额,请重新输入:");
            }
            else{
                System.out.println("找零:"+(coustom-allMoney));
                break;
            }   
        }
        
    }
}

运行结果及报错内容

img

我想要达到的结果

image-20220119154432092

continu=="y" 应该改为 "y".equals(continu),在 Java 中 == 比较的是对象的内存地址是否为同一个,String 的 equals 方法比较的才是字符串的内容是否相同。

while (continu=="y"){
改为:
while (continu.equals("y")){

continu是字符串类型,比较要用equals()方法。

字符串的比较相等要用继承自Object的equals方法或者Objects中的equals方法

第19行代码,while判断里的字符串比较改成:continu.equals("y")
字符串不能通过==的方式比较

while ("y".equals(continu.trim()))
好用望采纳

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632