[英]Confused with Switch statement in Java
有人可以告訴我為什么案例 1 在存款(案例 2)后沒有顯示更新的余額。
問題 - 當我在存款后檢查余額(案例 1)時。 它仍然向我顯示原始余額(即 250 和 1000)。
謝謝
public static void traiterMenu(int optionChoisie) {
double soldesCompteCheques;
double soldesCompteEpargne;
double depot;
int compte;
soldesCompteCheques = 250;
soldesCompteEpargne = 1000;
switch (optionChoisie) {
case 1:
System.out.println("Vous avez choisi option 1.");
System.out.println("Votre soldes est:");
System.out.println(String.format("%-30s %,12.2f$", " >> Compte Chèque", soldesCompteCheques));
System.out.println(String.format("%-30s %,12.2f$", " >> Compte Épargne", soldesCompteEpargne));
break;
case 2:
System.out.println("Vous avez choisi option 2.");
System.out.println("Entrez un montant de dépôt:");
depot = clavier.nextDouble();
System.out.println("Dans quel compte voulez vous effectuer le dépôt?");
System.out.println("1. Chèque");
System.out.println("2. Épargne");
compte = clavier.nextInt();
switch (compte) {
case 1:
soldesCompteCheques += depot;
System.out.println(String.format("Votre dépôt est completé. \n"
+ "Le solde de votre compte Cheque est %,.2f$", soldesCompteCheques));
break;
case 2:
soldesCompteEpargne += depot;
System.out.println(String.format("Votre dépôt est completé. \n"
+ "Le solde de votre compte Epargne est %,.2f$", soldesCompteEpargne));
break;
default:
System.out.println("Saisie erroneée.");
break;
}
break;
default:
System.out.println("Saisie erronnée. Veuillez réessayer.");
break;
}
}
在方法中聲明的變量存在於整個方法調用中,並且在之后立即被消除。 如果您再次輸入該方法,您將獲得一個品牌的、新鮮的、新的副本。 然后您立即將其設置為250
/ 1000
。
基本上,您的案例 2 會將這些值設置為其他值,方法退出,然后您的更改就會消失在空中。
如果你想保留長期的東西,你需要字段,而不是局部變量。 將double compte
和朋友移出直接在class X{}
聲明中,在整個代碼庫中的任何地方都擺脫static
(除了main
,這是static
的一種用途,您只需要一行, new MyApp().go()
然后確保 250/1000 init 與它一起進入字段 decl,並從該方法的主體中刪除。
soldesCompteCheques, soldesCompteEpargne 是 function 的局部變量,因此每次您調用 function 時,它們都會被初始化為 250,1000,這就是為什么即使在存款后您也會看到相同的值。 所以為了讓他們得到更新,讓他們成為全局變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.