package asd;
import java.util.Scanner;
public class pay {
public static void main(String[] args) {
Scanner kk=new Scanner(System.in);
String a = "y";
while(a!="n") {
System.out.println("******************話費充值******************");
System.out.println("請輸入手機號碼:");
String number=kk.next();
System.out.println("1.10元\t2.20元\t3.30元\n4.50元\t5.100元\t6.其他金額");
System.out.println("請選擇繳費金額序號:");
int no=kk.nextInt();
switch(no) {
case 1:System.out.println("手機號碼:"+number+",話費充值10元!");break;
case 2:System.out.println("手機號碼:"+number+",話費充值20元!");break;
case 3:System.out.println("手機號碼:"+number+",話費充值30元!");break;
case 4:System.out.println("手機號碼:"+number+",話費充值50元!");break;
case 5:System.out.println("手機號碼:"+number+",話費充值100元!");break;
case 6:System.out.println("輸入話費金額:");double money=kk.nextDouble();
System.out.println("手機號碼:"+number+",話費充值"+money+"元!");break;}
System.out.println("是否繼續充值(充值,請輸入y;不充值,請輸入n):");
a=kk.next();
}
System.out.println("**************************謝謝惠顧**********************************");
}
}
uj5u.com熱心網友回復:
你沒有寫退出處理啊a=kk.next();
后面沒有處理代碼
uj5u.com熱心網友回復:
因為y永遠都不等于nuj5u.com熱心網友回復:
。。。退出處理怎么寫
uj5u.com熱心網友回復:
我后面的輸入a值不是回傳給了while那里么。。這樣就n!=n跳出,我是這么想的 但是沒有實作 我也不知道為啥uj5u.com熱心網友回復:
首先你n!=n判斷結果為true的時候是進入回圈,你這就一直是true啊。再然后你沒有結束條件吧,你y不等于n就進回圈,下次還是y不等于n,你這就是一個死回圈了。不應該是回圈到什么值或者是幾次后給String a 賦值的嗎,不知道是不是你說的那個邏輯
uj5u.com熱心網友回復:
import java.util.Scanner;
public class pay {
public static void main(String[] args) {
Scanner kk=new Scanner(System.in);
String a = "y";
while(a!="n") {
System.out.println("******************話費充值******************");
System.out.println("請輸入手機號碼:");
String number=kk.next();
System.out.println("1.10元\t2.20元\t3.30元\n4.50元\t5.100元\t6.其他金額");
System.out.println("請選擇繳費金額序號:");
int no=kk.nextInt();
switch(no) {
case 1:System.out.println("手機號碼:"+number+",話費充值10元!");break;
case 2:System.out.println("手機號碼:"+number+",話費充值20元!");break;
case 3:System.out.println("手機號碼:"+number+",話費充值30元!");break;
case 4:System.out.println("手機號碼:"+number+",話費充值50元!");break;
case 5:System.out.println("手機號碼:"+number+",話費充值100元!");break;
case 6:System.out.println("輸入話費金額:");double money=kk.nextDouble();
System.out.println("手機號碼:"+number+",話費充值"+money+"元!");break;}
System.out.println("是否繼續充值(充值,請輸入y;不充值,請輸入n):");
a=kk.next();
//a這里獲取到新的值需要做一個退出回圈的處理
if (a=="n"||a.equals("n")){
break;//退出回圈
}
}
System.out.println("**************************謝謝惠顧**********************************");
}
}
uj5u.com熱心網友回復:
把a!="n"換成 !"n".equals(a)還有比值equals要優先==,代碼習慣要養成
uj5u.com熱心網友回復:
String是物件型別,比較要用equals比較uj5u.com熱心網友回復:
你這問題很好,很多基礎的點多覆寫到了第一、字串問題,首先 String a=“y”創建一個字串,而你while內部的 a=kk.next(); 先創建個字串kk.next(),之后把它賦值給a,所以此時a的參考地址已經改變。
第二、“==”問題,“==”比較的時候兩個物件記憶體地址是否一樣,所以結合上面說的,a的地址已經變了,所以永遠不會相等
第三、equals方法,String重寫了這個方法,比較兩個物件內容是否相同,所以你修改下 while(!"n".equals(a)) 就ok了
最后,編碼規范問題,字串比較盡量用equals方法
uj5u.com熱心網友回復:
謝謝各位大佬幫助 感激!!!!!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/194445.html
標籤:Eclipse
