Java - 输入项目名称和输出总价格。

时间:2017-10-24 00:28:26

标签: java

这个程序是我在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();
}

}

1 个答案:

答案 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);
}
相关问题