Java 7-11在线商店计划。需要修改吗?
我是一个非常业余的学生程序员,他编写了一个代码,销售用户物品,然后通过询问用户居住的州来计算该物品的税。鉴于我缺乏编程经验,这是一个非常简单的代码。不幸的是,我犯了一个错误,没有事先考虑就编写了这段代码 这个项目实际上是我班上的最后一个项目。正因为如此,我必须满足一些要求,而我目前在这些要求上遇到了困难。我已经完成了几乎所有的要求,但注意到有些还没有完成。我缺少的一些要求是…:Java 7-11在线商店计划。需要修改吗?,java,constructor,accessor,modifier,Java,Constructor,Accessor,Modifier,我是一个非常业余的学生程序员,他编写了一个代码,销售用户物品,然后通过询问用户居住的州来计算该物品的税。鉴于我缺乏编程经验,这是一个非常简单的代码。不幸的是,我犯了一个错误,没有事先考虑就编写了这段代码 这个项目实际上是我班上的最后一个项目。正因为如此,我必须满足一些要求,而我目前在这些要求上遇到了困难。我已经完成了几乎所有的要求,但注意到有些还没有完成。我缺少的一些要求是…: 1名专业的构造函数(我从来都不知道如何有效地实现这一点,考虑到我的代码,我怀疑这是否仍然可行) 1个访问器和2个修饰
- 1名专业的构造函数(我从来都不知道如何有效地实现这一点,考虑到我的代码,我怀疑这是否仍然可行)
- 1个访问器和2个修饰符(与构造函数相同,如何使用给定的代码正确执行此操作?)
- 使用printf的某种格式化输出(可能可以用来对总价进行四舍五入?太糟糕了,我不完全理解)
import java.util.Scanner;
public class Tax_Calculator {
public static void main(String[]args)
{
Scanner in = new Scanner(System.in);
//variables
double taxPrice = 0;
double totalPrice = 0;
int choice = 0;
double rawCost = 0;
System.out.println("Hello! Welcome to the new 7/11 online ordering device.");
System.out.println("We're low on supplies, so only pick one.");
System.out.println("");
//menu
String [][] menu = {
{"(1) Pizza - $4.99"," (6) Slurpee - $0.79"},
{"(2) Cigarettes - $7.99"," (7) Hotdog - $1.99"},
{"(3) Coffee - $2.99", " (8) Doritos - $2.99"},
{"(4) Mountain Dew - $1.49", " (9) Water - $1.29"},
{"(5) Ice cream - $2.49", " (10) Muffin - $0.99"},
};
//prints menu
for (int e = 0; e < 5; e++)
{
System.out.println(menu[e][0] + "\t"+ menu[e][1]);
System.out.print("");
}
System.out.println("");
System.out.println("Enter the number of the item you want: ");
//user chooses item off of menu
int userInputMenu = in.nextInt();
if (userInputMenu == 1)
{
choice = 1;
System.out.println("You chose the pizza for $4.99.");
rawCost = 4.99;
}
if (userInputMenu == 2)
{
choice = 2;
System.out.println("You chose the cigarettes for $7.99.");
rawCost = 7.99;
}
if (userInputMenu == 3)
{
choice = 3;
System.out.println("You chose the coffee for $2.99.");
rawCost = 2.99;
}
**Continues all the way to userInputMenu == 10**
System.out.println("Now to calculate the tax, please enter the state you are currently in: ");
String userInputState = in.next();
//what state is the user in?
if (userInputState.equals("Alaska") || userInputState.equals("Delaware") || userInputState.equals("Montana") || userInputState.equals("New Hampshire") || userInputState.equals("Oregon"))
{
taxPrice = 0.0;
System.out.println("Luckily, the sales tax in " + userInputState + " is 0, so your final price is " + rawCost);
}
if (userInputState.equals("Colorado"))
{
taxPrice = 0.029;
totalPrice = ((taxPrice * rawCost) + rawCost);
System.out.println("The sales tax in " + userInputState + " is only " + taxPrice);
System.out.println("That means that the total price of your item is "+ totalPrice);
}
**Also continues for all 50 states**
//thank you
System.out.println("");
System.out.println("Thank you for shopping at the new online 7/11.");
System.out.println("Thank you come again.");
}
import java.util.Scanner;
公共类税务计算器{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
//变数
双重征税价格=0;
双倍总价=0;
int-choice=0;
双重成本=0;
System.out.println(“您好!欢迎使用新的7/11在线订购设备”);
System.out.println(“我们的供应不足,所以只选一个。”);
System.out.println(“”);
//菜单
字符串[][]菜单={
{”(1)比萨饼-4.99美元,“(6)Slurpee-0.79美元”},
{“(2)香烟-7.99美元”,“热狗-1.99美元”},
{”(3)咖啡-2.99美元,“(8)多力多司-2.99美元”},
{“(4)山露-1.49美元”,“9)水-1.29美元”,
{”(5)冰淇淋-2.49美元,“(10)松饼-0.99美元”,
};
//打印菜单
对于(int e=0;e<5;e++)
{
System.out.println(菜单[e][0]+“\t”+菜单[e][1]);
系统输出打印(“”);
}
System.out.println(“”);
System.out.println(“输入所需项目的编号:”);
//用户从菜单中选择项目
int userInputMenu=in.nextInt();
如果(userInputMenu==1)
{
选择=1;
System.out.println(“你选择比萨饼的价格是4.99美元。”);
原始成本=4.99;
}
如果(用户输入菜单==2)
{
选择=2;
System.out.println(“您以7.99美元的价格选择了香烟”);
原始成本=7.99;
}
如果(用户输入菜单==3)
{
选择=3;
System.out.println(“您选择咖啡的价格是2.99美元”);
原始成本=2.99;
}
**一直持续到userInputMenu==10**
System.out.println(“现在要计算税款,请输入您当前所在的州:”;
字符串userInputState=in.next();
//用户处于什么状态?
如果(userInputState.equals(“阿拉斯加”)| userInputState.equals(“特拉华”)| userInputState.equals(“蒙大拿”)| userInputState.equals(“新罕布什尔州”)| userInputState.equals(“俄勒冈州”))
{
taxPrice=0.0;
System.out.println(“幸运的是,“+userInputState+”中的销售税为0,因此您的最终价格为“+rawCost”);
}
if(userInputState.equals(“科罗拉多”))
{
taxPrice=0.029;
总价=((税价*原始成本)+原始成本);
System.out.println(“在“+userInputState+”中的销售税仅为“+taxPrice”);
System.out.println(“这意味着您的商品的总价是”+总价);
}
**所有50个州也继续如此**
//多谢各位
System.out.println(“”);
System.out.println(“感谢您在7/11新在线购物”);
System.out.println(“谢谢您再次光临”);
}
我只是想得到一些关于如何满足我所缺少的需求的详细解释
还有,当用户输入一个州时,程序可以读为“MARYLAND”或“MARYLAND”,我怎么能让它这样呢?你读过关于面向对象编程的书吗?这是一个很好的使用它的情况,因为你有一个“items”的超类,这些items的子类“coffee”“slurpee”等。客户是否能够一次购买多个项目,然后找到含税的总额?我试图编写这个代码。你可以进一步了解基于SO上其他人的输入或您的需要。这可能是您的良好开端。添加try/catch以处理异常: 用于保存菜单对象的类:
public class Menu {
private int id;
private String item;
private double Price;
public Menu(int id, String item, double price) {
super();
this.id = id;
this.item = item;
Price = price;
}
public int getId() {
return id;
}
public String getItem() {
return item;
}
public double getPrice() {
return Price;
}
@Override
public String toString() {
return "Menu [id=" + id + ", item=" + item + ", Price=$" + Price + "]";
}
public boolean validateMenu(int id) {
if (id == this.id) {
System.out.println("You chose the " + item + " for " + Price);
return true;
}
return false;
}
}
public class State {
private String message;
private String state;
private double taxPrice;
public State(String state, double taxPrice, String message) {
this.state = state;
this.taxPrice = taxPrice;
this.message = message;
}
public String getMessage() {
return message;
}
public String getState() {
return state;
}
public double getTaxPrice() {
return taxPrice;
}
@Override
public String toString() {
return "State [taxPrice=" + taxPrice + ", state=" + state
+ ", message=" + message + "]";
}
public boolean validateState(String state) {
if (state.equalsIgnoreCase(this.state)) {
System.out.println(this.message.replace("userInputState", this.state) + this.taxPrice);
return true;
}
return false;
}
}
用于保存状态对象的类:
public class Menu {
private int id;
private String item;
private double Price;
public Menu(int id, String item, double price) {
super();
this.id = id;
this.item = item;
Price = price;
}
public int getId() {
return id;
}
public String getItem() {
return item;
}
public double getPrice() {
return Price;
}
@Override
public String toString() {
return "Menu [id=" + id + ", item=" + item + ", Price=$" + Price + "]";
}
public boolean validateMenu(int id) {
if (id == this.id) {
System.out.println("You chose the " + item + " for " + Price);
return true;
}
return false;
}
}
public class State {
private String message;
private String state;
private double taxPrice;
public State(String state, double taxPrice, String message) {
this.state = state;
this.taxPrice = taxPrice;
this.message = message;
}
public String getMessage() {
return message;
}
public String getState() {
return state;
}
public double getTaxPrice() {
return taxPrice;
}
@Override
public String toString() {
return "State [taxPrice=" + taxPrice + ", state=" + state
+ ", message=" + message + "]";
}
public boolean validateState(String state) {
if (state.equalsIgnoreCase(this.state)) {
System.out.println(this.message.replace("userInputState", this.state) + this.taxPrice);
return true;
}
return false;
}
}
税务计算器
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Tax_Calculator {
public static void main(String[] args) throws Exception {
Scanner in = null;
Tax_Calculator tc;
Menu menu = null;
State state = null;
double taxPrice;
double totalPrice;
System.out
.println("Hello! Welcome to the new 7/11 online ordering device.");
System.out.println("We're low on supplies, so only pick one.");
System.out.println("");
tc = new Tax_Calculator();
boolean continueFlag = true;
while (continueFlag) {
tc.printMenu();
System.out.println("");
System.out.println("Enter the number of the item you want: ");
in = new Scanner(System.in);
int userInputMenu = in.nextInt();
for (Menu menu2 : tc.menuList)
if (menu2.validateMenu(userInputMenu)) {
menu = menu2;
break;
}
if (menu == null)
System.out.println("Please choose a valid number! \n");
else
continueFlag = false;
}
System.out.println("");
System.out
.println("Now to calculate the tax, please enter the state you are currently in: ");
in.nextLine();
String userInputState = in.nextLine();
for (State state2 : tc.stateList)
if (state2.validateState(userInputState)) {
state = state2;
break;
}
taxPrice = state.getTaxPrice();
totalPrice = (1 + taxPrice) * menu.getPrice();
System.out.print("That means that the total price of your item is ");
System.out.printf("%.2f", totalPrice);
System.out.println("");
System.out.println("Thank you for shopping at the new online 7/11.");
System.out.println("Thank you come again.");
in.close();
tc.destroy();
}
private List<Menu> menuList = null;
private List<State> stateList = null;
Tax_Calculator() {
initMenu();
initState();
}
private void destroy() {
menuList = null;
stateList = null;
}
private void initMenu() {
menuList = new ArrayList<Menu>();
menuList.add(new Menu(1, "Pizza", 4.99));
menuList.add(new Menu(2, "Cigarettes", 7.99));
menuList.add(new Menu(3, "Coffee", 2.99));
}
private void initState() {
stateList = new ArrayList<State>();
stateList.add(new State("North Dakota", 0.05,
"The sales tax in userInputState is "));
stateList.add(new State("Arizona", 0.05,
"The sales tax in userInputState is "));
stateList.add(new State("Maine", 0.05,
"The sales tax in userInputState is "));
}
private void printMenu() {
for (Menu menu : menuList)
System.out.println(menu);
}
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类税务计算器{
公共静态void main(字符串[]args)引发异常{
扫描仪输入=空;
税务计算器;
菜单=空;
State=null;
双重征税价格;
双倍总价;
系统输出
.println(“您好!欢迎使用新的7/11在线订购设备”);
System.out.println(“我们的供应不足,所以只选一个。”);
System.out.println(“”);
tc=新的税_计算器();
布尔continueFlag=true;
while(continueFlag){
tc.printMenu();
System.out.println(“”);
System.out.println(“输入所需项目的编号:”);
in=新扫描仪(System.in);
int userInputMenu=in.nextInt();
用于(菜单菜单2:tc.menuList)
if(menu2.validateNu(userInputMenu)){
菜单=菜单2;
打破
}
如果(菜单==null)
System.out.println(“请选择一个有效的数字!\n”);
其他的
continueFlag=false;
}
System.out.println(“”);
系统输出
.println(“现在开始计算