這個問題在這里已經有了答案: 如何比較 Java 中的字串? (23 個回答) 昨天關門。
我正在解決一個關于商店提供的折扣的問題。挑戰在于僅使用 switch 和 if 陳述句來解決它。事情是這樣的:
:如果購買金額在 0-100 之間,并且布料型別是“磨布”,則沒有折扣。
:如果購買金額在 0-100 之間,并且布料型別是“手搖織品”,則有 5% 的折扣。
:如果購買金額在 101-200 之間,并且布料型別是“磨布”,則有 5% 的折扣。
:如果購買金額在 101-200 之間,并且布料型別是“手織品”,則有 7.5% 的折扣
問題是在輸入價格和布料型別后,我的代碼停止了。這是為什么?這是我迄今為止撰寫的代碼:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the purchase amount");
int p = sc.nextInt();
Scanner cloth = new Scanner(System.in);
System.out.println("Select your type of cloth");
String type = cloth.nextLine();
double w, k;
int cases = p % 10;
switch (cases) {
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 0:
case 1:
if (p > 0 || p <= 100) {
if (type == "Mill Cloth") {
System.out.println("The total value is" p);
break;
}
if (type == "Handloom items") {
w = 0.05 * p;
k = p - w;
System.out.println("The total amount to be paid is" k);
break;
}
}
if (p > 100 || p <= 200) {
if (type == "Mill Cloth") {
w = 0.05 * p;
k = p - w;
System.out.println("The total mount to be paid is" k);
break;
}
if (type == "Handloom items") {
w = 0.075 * p;
k = p - w;
System.out.println("The total amount to be paid is" k);
break;
}
}
}
}
問題是在輸入價格和布料型別后,我的代碼停止了。這是為什么?
uj5u.com熱心網友回復:
您的代碼在收到輸入后并沒有停止,而是條件檢查以查看是否type保持值"Mill Cloth"或"Handloom Items"作業不正常。每當您比較或檢查 a 的相等性時String,請使用以下.equals()方法:
if (type.equals("Mill Cloth")) {
和
if (type.equals("Handloom items")){
對于字串,我們使用.equals()而不是==比較實際物件是否具有相同的字符和值,而不是比較原始值或參考是否相同。
我希望這有幫助!如果您需要任何進一步的細節/說明,請告訴我:)
附加說明(@David Conrad 的建議):即使您使用兩個 Scanner 來接收您的輸入,如果您使用更常見的解決方案,即僅使用一個 Scanner 來接收您的所有輸入(同時使用p和typewith sc),您會遇到你的變數type取一個空字串的值的問題,該字串是在取入之后由尾隨換行符留下的p。
要解決此問題,您只需在sc.nextLine()接受用戶輸入后輸入 forp以注冊該換行符,然后再接受用戶輸入 fortype.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432492.html
