我对我的库存计划有疑问,需要稍加调整才能正常运行。基本上,我要求使用输入个人想要订购的产品数量,我希望它保存在RAM中,然后输出产品数量和用户的总成本。这是我的第一个构造函数类“Item”。
import java.text.*;
import java.util.*;
import javax.swing.*;
public class Item
{
public static final double SUBWOOFER_VALUE= 175.99;
public static final double TWEETER_VALUE= 34.49;
public int subOrder;
public int tweetOrder;
public double totPrice;
public int subStock;
public int tweetStock;
public Item()
{
int subStock=1000;
int tweetStock=3000;
double subPrice= (subOrder*SUBWOOFER_VALUE);
double tweetPrice= (tweetOrder*TWEETER_VALUE);
}
public void addSubOrder(int newsubOrder)
{
subOrder=newsubOrder;
}
public int getSubOrder()
{
return subOrder;
}
public void addTweetOrder(int newtweetOrder)
{
tweetOrder= newtweetOrder;
}
public int getTweetOrder()
{
return tweetOrder;
}
public void newSubStock(int newSubStock)
{
subStock= newSubStock;
newSubStock= (subStock)-(subOrder);
}
public int getsubStock()
{
return subStock;
}
public void newTweetStock(int newTweetStock)
{
tweetStock= newTweetStock;
newTweetStock= (tweetStock)-(tweetOrder);
}
public int gettweetStock()
{
return tweetStock;
}
public void totPrice(double newTotPrice, double subPrice, double tweetPrice)
{
newTotPrice= (subPrice+tweetPrice)*(.065);
totPrice= newTotPrice;
}
public double getTotPrice()
{
return totPrice;
}
public static void main (String[] args)
{
Item Order= new Item();
}//end main
}
然后这是我的控制器类,它控制输入和输出......
import javax.swing.*;
import java.util.*;
public class Controller
{
public static void main (String[] args)
{
Scanner myScan=new Scanner(System.in);
Item Order= new Item();
String question= "Would you like to make an order?";
String question1= "Would you like to order Subwoofers?";
String question2= "Would you like to order Tweeters?";
String question3= "How many would you like to order?";
String question4="Would you like to place another order?";
String thank= "Thank you for your order,";
System.out.println(question);
String answer= myScan.nextLine();
System.out.println(question1);
while(!answer.equalsIgnoreCase("No"))
{
String subAns= myScan.nextLine();
if(subAns.equals("Yes"))
{
System.out.println(question3);
int subOrder= myScan.nextInt();
}
System.out.println(question2);
String tweetAns= myScan.nextLine();
if(tweetAns.equals("Yes"))
{
System.out.println(question3);
int tweetOrder= myScan.nextInt();
}
else//If subAns= no then proceed to ask about tweeters.
{
tweetAns= myScan.nextLine();
if(tweetAns.equals("Yes"))//If tweeter answer = yes then proceed to ask for an amount
{
System.out.println(question3);
int tweetOrder= myScan.nextInt();
}
}break;
}//end while
System.out.println(thank);
System.out.println("Your ordered: "+ Order.getSubOrder() + " Subwoofer's and "+ Order.getTweetOrder() + " Tweeter's");
System.out.println("Your total is:"+ Order.getTotPrice());
}//end main
}//Two items
因此,当我输入内容并期望输出时,我知道输出中会得到0。
---- jGRASP exec:java Controller
您想订购吗? 是 您想订购低音炮吗? 是 你想订几个? 9 您想订购Tweeters吗? 是 你想订几个? 4 谢谢您的订单, 您的订购:0个重低音扬声器和0个高音扬声器 你的总数是:0.0
---- jGRASP:操作完成。
非常感谢任何帮助。
答案 0 :(得分:0)
您从未调用任何方法计算更新Item
(totPrice()
)的状态,并且您不自行更新字段(subStock
tweetStock
)因此它们仍然是它们的初始值,因为你从未改变它们。
另外,在控制器中创建一个类型为Item的subwoofer
和tweeter
对象更有意义,以避免在项目中加倍所有代码
此外,由于java是按值传递的,因此为函数分配参数(例如newSubStock= (subStock)-(subOrder);
中的newSubStock()
)是多余的,没有用处
答案 1 :(得分:0)
我想知道你为什么要使用swing。* import?你需要纠正你的代码很多。你使用忽略大小写'否'但不使用相同的'是'。你从来没用过'question4'。而且一旦你在subOrder和tweetOrder中获得订单,你在哪里使用它?您需要调用Item对象的方法才能进行计算。
尝试添加“Order.addSubOrder(subOrder);& Order.addTweetOrder(tweetOrder);”收到订单后