gpt4 book ai didi

java - 在 Java 中根据字符串数组中的项目检查输入

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:12 24 4
gpt4 key购买 nike

我正在为我的大学作业编写以下代码。我被要求使用我正在使用的数组。我被要求使用我已经在做的 for 循环和 if 语句。我想出了以下代码:

class HardwareStore2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

System.out.printf("%55s", "**WELCOME TO THE HARDWARE STORE**\n");
System.out.printf("%55s", "=================================\n");

String [] codes = {"G22", "K13", "S21", "I30"};
String [] description = {"STICKY Construction Glue", "CAR-LO Key Ring", "SCREW-DUP Screwy Screws", "LET-IT-RAIN Padlock"};
List<String> codeList = Arrays.asList(codes);
String output = "";
int i = 1000;
String [] userCode = new String[i];
char dolSymb = '$';
int [] pricesAndTax = {10989, 5655, 1099, 4005, 20};
int [] weight = {};
int [] userQuantity = {1};
int [] userPrice = new int[i];
int userStickyPrice = 0;
int userKeyringPrice = 0;
int userScrewyPrice = 0;
int userPadlockPrice = 0;
int userPreWithTax = 0;
int userTotal = 0;
int userPreTotal = 0;
int userShipping = 0;

System.out.printf("%-10s%-40s%-15s%-10s\n", "CODE", "DESCRIPTION", "WEIGHT", "PRICE\n");
System.out.printf("%-10s%-55s%s%d.%02d\n", codes[0], description[0], dolSymb, pricesAndTax[0]/100, pricesAndTax[0]%100);
System.out.printf("%-10s%-55s%s%d.%02d\n", codes[1], description[1], dolSymb, pricesAndTax[1]/100, pricesAndTax[1]%100);
System.out.printf("%-10s%-55s%s%d.%02d\n", codes[2], description[2], dolSymb, pricesAndTax[2]/100, pricesAndTax[2]%100);
System.out.printf("%-10s%-55s%s%d.%02d\n", codes[3], description[3], dolSymb, pricesAndTax[3]/100, pricesAndTax[3]%100);

System.out.println("PLEASE ENTER YOUR ORDER:");
System.out.print("NAME: ");
String username = in.nextLine();
System.out.print("ADDRESS Line 1: ");
String address1 = in.nextLine();
System.out.print("ADDRESS Line 2: ");
String address2 = in.nextLine();
System.out.print("POSTAL CODE: ");
String postalcode = in.nextLine();

for (i = 0;; i++) {
System.out.print("CODE (X to QUIT):");
userCode[i] = in.nextLine();

if (userCode[i].equalsIgnoreCase("x")) {
break;
}

System.out.print("QUANTITY: ");
userQuantity[i] = in.nextInt();
in.nextLine();

if (userCode[i].equalsIgnoreCase(codes[0])) {
userStickyPrice += userQuantity[i]*pricesAndTax[0];

}
else if (userCode[i].equalsIgnoreCase(codes[1])) {
userKeyringPrice += userQuantity[i]*pricesAndTax[1];

}
else if (userCode[i].equalsIgnoreCase(codes[2])) {
userScrewyPrice += userQuantity[i]*pricesAndTax[2];

}
else if (userCode[i].equalsIgnoreCase(codes[3])) {
userPadlockPrice += userQuantity[i]*pricesAndTax[3];

}
else if (!codeList.contains(userCode)) {
i = i - 1;
}
}
}
}

现在,一切都与一百万个 if 和 else 无缝协作,但我想知道是否有一种方法可以用一两个执行以下操作的语句替换所有 if-else-if 语句:

if (userCode[i].contains(codes[0], codes[1], codes[2], codes[3] {}

或者也许更好的是:

if (userCode.contains(any.one.item.in.codeList) {
then.get.the.price.of.that.item.and.do.item.specific.operations
}

如果问题不够清楚,请告诉我。再说一次,这是一项大学作业,所以我希望得到解释。

最佳答案

无需更改其余数据结构以获得更高效的东西(例如,Map),您可以使用单个 if 和嵌套循环实现相同的效果:

boolean found = false;
for (int j = 0 ; !found && j != codes.length ; j++) {
if (userCode[i].equalsIgnoreCase(codes[j])) {
userScrewyPrice += userQuantity[i]*pricesAndTax[j];
found = true;
}
}
if (!found) {
i--;
}

关于java - 在 Java 中根据字符串数组中的项目检查输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8966435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com