日期:2014-05-20  浏览次数:20707 次

菜鸟报道+练习求助(基础,流程控制语句相关)
各位大神们好!
鄙人第一次来到这里,有冒犯,还请海涵
不废话了,最近开始学习JAVA,学到流程控制语句,就被个个习题难住了……
这是题目

这是我的代码:

import java.util.Scanner;

public class Work6{
public static void main(String [] args){
Scanner sc =new Scanner(System.in);
System.out.println("MyShopping管理系统 > 购物结算\n");
System.out.println("*************************************************");
System.out.println("请选择购买的商品编号:");
System.out.println("1.T恤 2.网球鞋 3.网球拍");
System.out.println("*************************************************");
String choose= "y";
while(choose =="y"){
System.out.print("请输入商品编号:");
int number =sc.nextInt();
switch(number){
case 1:
System.out.println("T恤 ¥245.0");
break;
case 2:
System.out.println("网球鞋 ¥570.0");
break;
case 3:
System.out.println("网球拍 ¥233.0");
break;
default:
System.out.println("商品编号不合法!");
break;
}
System.out.print("\n是否继续(y/n)");
choose = sc.next();
}
System.out.print("程序结束!");
}
}


效果应该是如图的,但每次运行时都是这样

请问是哪里出错了?

------解决方案--------------------
你的while循环写错啦,在判断的时候应该改为:“y”.equals(choose)。
------解决方案--------------------
字符串比较用equals
------解决方案--------------------
while(choose =="y")改成while("y".equals(choose)),原因应该是sc.next();会返回一个新创建的字符串对象,而不是获取字符串缓冲池里的"y"。
楼上的更好一些
------解决方案--------------------
== 比较的是内存地址·不是值··