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