這個(gè)部分為什么輸入finish并沒有結(jié)束這個(gè)循環(huán)啊,換成int型就可以中止循環(huán),為什么String不行啊
for(;;){
System.out.println("請(qǐng)輸入您要的類型:");
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("請(qǐng)輸入您要的數(shù)量");
Scanner input3=new Scanner(System.in);
n[b-1]=input3.nextInt();
System.out.println("請(qǐng)輸入你要租用的天數(shù):");
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;
2016-09-10
字符串的比較在java里面不能用==,因?yàn)?=對(duì)于字符串而言需要他們存放的內(nèi)存地址一樣和值一樣兩者缺一不可,而顯然這里僅僅是值一樣。一般比較對(duì)象的值是否一樣用equals即wancheng.equals("finish")就可以了。
還有一點(diǎn)如果你定義兩個(gè)字符串
String?s1?=?"2";
String?s2?=?"2";
這里你用==判斷用System。out。println(s1==s2)你會(huì)發(fā)現(xiàn)是true,是的他們地址也一樣因?yàn)?span>JAVA在String類,采用了享元模式,每當(dāng)生成一個(gè)新內(nèi)容的字符串時(shí),他們都被添加到一個(gè)共享池中,當(dāng)?shù)诙卧俅紊赏瑯觾?nèi)容的字符串實(shí)例時(shí),就共享此對(duì)象,而不是創(chuàng)建一個(gè)新對(duì)象,這樣的做法僅僅適合于通過=符號(hào)進(jìn)行的初始化”
如果你是這樣定義的
String?s1?=?new?String("1");
String?s2?=?new?String("1");
System.out.println(s1?==?s2);
你會(huì)發(fā)現(xiàn)輸出為false. ?
?語文不好希望你能看懂
2016-09-03
換成int型就可以中止循環(huán),為什么String不行啊