问答详情
源自:12-1 综合练习

这个部分为什么输入finish并没有结束这个循环啊,换成int型就可以中止循环,为什么String不行啊

for(;;){

System.out.println("请输入您要的类型:");

Scanner input2=new Scanner(System.in);

int b=input2.nextInt();

 if( b>0&&b<7){

p[b-1]=cars[b-1].getMoney();

System.out.println("请输入您要的数量");

Scanner input3=new Scanner(System.in);

n[b-1]=input3.nextInt();

System.out.println("请输入你要租用的天数:");

Scanner input4=new Scanner(System.in);

d[b-1]=input4.nextInt();

}

 else {

 System.out.println("您输入无效字符");

 }

System.out.println("确定输入finish");

Scanner input4=new Scanner(System.in);

String wancheng=input4.next();

if(wancheng=="finish")

break;


提问者:慕粉1472426630 2016-09-03 23:05

个回答

  • qq_风_130
    2016-09-10 03:48:48
    已采纳

    字符串的比较在java里面不能用==,因为==对于字符串而言需要他们存放的内存地址一样和值一样两者缺一不可,而显然这里仅仅是值一样。一般比较对象的值是否一样用equals即wancheng.equals("finish")就可以了。

    还有一点如果你定义两个字符串

    String s1 = "2";
    String s2 = "2";

    这里你用==判断用System。out。println(s1==s2)你会发现是true,是的他们地址也一样因为JAVA在String类,采用了享元模式,每当生成一个新内容的字符串时,他们都被添加到一个共享池中,当第二次再次生成同样内容的字符串实例时,就共享此对象,而不是创建一个新对象,这样的做法仅仅适合于通过=符号进行的初始化”

    如果你是这样定义的

    String s1 = new String("1");
    String s2 = new String("1");
    System.out.println(s1 == s2);
    你会发现输出为false.  


     语文不好希望你能看懂


  • 慕粉1472426630
    2016-09-03 23:06:36

    换成int型就可以中止循环,为什么String不行啊