这个程序是我在Java类介绍中给出的一个作业。
克利夫兰州立大学为员工,教师和学生发放维京卡。科罗拉多州立大学的每个成员都可以从书店购买1-10件商品,折扣率各不相同。项目清单及其价格将在下一页给出。编写一个程序,允许用户输入他们想要购买的项目。您的计划应验证CSU Viking卡ID并计算总额和净额(包括折扣率后)。
我输入的所有数据都是给我的,所以不用担心。
我正在寻找一种更简单的方法,然后使用输入的每个项目的if语句。在我的脑海中,我试图将输入的名称存储到数组中,然后将输入的名称的总和加在一起。然而,我发现即使我将变量的值指定为双精度数。数组不输出正确的数字,它输出单词的默认值。
如果我使用方法,也会在课堂上给予奖励积分,但我对它们并不完全熟悉,所以我想我会尽力坚持我所知道的。
我没有要求有人为我做这个程序,所以我可以把它转给我,但仅仅是帮助找出可能的方法,特别是让它输出一个总的病了能够计算出来除了折扣和其他一切
现在我只使用第一个for循环,所以进入40000就可以达到我一直试图使用的总和。
import java.util.Scanner;
public class Assignment2 {
public static void main(String[] args)
{
System.out.println("Please enter CSU I.D.");
Scanner input = new Scanner(System.in);
int csuid = input.nextInt();
int minvalue1 = 40000;
int maxvalue1 = 59999;
int minvalue2 = 60000;
int maxvalue2 = 79999;
int minvalue3 = 80000;
int maxvalue3 = 89999;
int i;
double bookbag = 40.00;
double textbook = 50.00;
double notebook = 3.00;
double pen = 1.00;
double pencil = 1.00;
double sweatpants = 35.00;
double shirt = 25.00;
double sweater = 30.00;
double candy = 2.00;
double planner = 15.00;
double sum = 0;
System.out.println("Please enter how many items you are going to purchase.");
int items = input.nextInt();
Scanner read = new Scanner(System.in);
if (items <= 10)
{
String itemArray[];
itemArray = new String[items];
if (csuid >= minvalue1 && csuid <= maxvalue1)
{
for(i = 0; i < items; i++ )
{
System.out.println("What would you like to purchase?");
String c = read.next();
itemArray[i] = c;
}
for(int counter = 0;counter < itemArray.length; counter++)
{
System.out.println(itemArray[counter] + " ");
}
System.out.println("Total Value " + sum);
}
else if (csuid >= minvalue2 && csuid <= maxvalue2)
{
for(i = 0; i < items; i++ )
{
System.out.println("What would you like to purchase?");
String c = read.next();
itemArray[i] = c;
for(int counter = 0;counter < itemArray.length; counter++)
{
System.out.println(itemArray[counter] + " ");
//sum += itemArray[counter];
}
System.out.println("Total Value " + sum);
}
System.out.println("Total Value " + sum);
}
else if (csuid >= minvalue3 && csuid <= maxvalue3)
{
for(i = 0; i < items; i++ )
{
System.out.println("What would you like to purchase?");
String c = read.next();
itemArray[i] = c;
for(int counter = 0;counter < itemArray.length; counter++)
{
System.out.println(itemArray[counter] + " ");
//sum += itemArray[counter];
}
System.out.println("Total Value " + sum);
}
System.out.println("Total Value " + sum);
}
else
{
System.out.println("Invalid CSU ID");
}
}
else
{
System.out.println("Cannot purchase " + items + " items");
}
read.close();
input.close();
}
}
答案 0 :(得分:0)
关于检查有效的CSU ID,您应该使用OR组合条件。
if ((min1<=id && id <= max1) ||
(min2<=id && id <= max2)) {
} else {} // Not valid
你可以制作一个名为isValidId(int id, int min, int max)
的方法,但我会把它留给你。
无论如何,看起来你需要Map<String, Double>
例如,
Map<String, Double> amounts = new HashMap<>();
map.put("bookbag", 40.00);
map.put("textbook", 50.00);
...
然后,要添加值,请从扫描程序中读取并存储在数组中,然后获取其值
for(int i = 0; i < items; i++ ) {
System.out.println("What would you like to purchase?");
String c = read.nextLine();
itemArray[i] = c;
sum += map.get(c);
}