java中输入字符串用数组,用Java检查字符串数组中项目的输入

我有以下代码,我正在为我的大学任务工作.我被要求使用我正在使用的数组.我被要求使用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 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;

}

}

}

}

现在,一切都与一百万个ifs和elses无缝协作,但我想知道是否有办法替换所有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,arrays,string,if-statement

来源: https://codeday.me/bug/20190723/1514007.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值