这是我使用swing为applet编写的代码。该程序允许用户输入任何额外的项目(外围设备),他们想要使用哪种运输方式,然后允许他们按下按钮来计算他们的总成本,无论是否运送,取决于他们推送的按钮。 问题是,当我运行它时,它会冻结,并且在我单击任一计算按钮后都没有做任何事情。有没有人发现我的代码有什么问题导致了这个? 谢谢。
package selling;
public class midtermComputers extends javax.swing.JApplet {
public double calculateCost(int quantity){
double discountedPrice=getDiscountPercentage(quantity);
double finalCost=0;
if (isShipping()&(groundRadioButton.isSelected())&quantity<100){
finalCost= ((discountedPrice*.05)+discountedPrice)*quantity;
}
if (isShipping()&(groundRadioButton.isSelected())&quantity>100){
finalCost=discountedPrice*quantity;
}
if (isShipping()&(airRadioButton.isSelected())){
finalCost= discountedPrice*.1*quantity;
}
if (isShipping()&(fedExRadioButton.isSelected())){
finalCost= discountedPrice*.2*quantity;
}
if (!isShipping()){
finalCost= discountedPrice*quantity;
}
return finalCost;
}
private void calcWithShippingButtonActionPerformed(java.awt.event.ActionEvent evt) {
int quantity=1;
double finalCost=calculateCost(quantity);
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost + "\n" );
quantity=100;
while(quantity<=1000){
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost + "\n" );
quantity=quantity+100;
}
}
private void calcWithoutShippingButtonActionPerformed(java.awt.event.ActionEvent evt) {
int quantity=1;
double finalCost=calculateCost(quantity);
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost + "\n" );
quantity=100;
while(quantity<=1000){
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost + "\n" );
quantity=quantity+100;
}
}
public double calculateCost(){
double base=399.00;
double costOneUnit=0.0;
double speakerPeripheral=0.0;
double printerPeripheral=0.0;
double scannerPeripheral=0.0;
double microphonePeripheral=0.0;
double projectorPeripheral=0.0;
double plotterPeripheral=0.0;
while(speakerCheckBox.isSelected()){
speakerPeripheral=89.00;
}
while(printerCheckBox.isSelected()){
printerPeripheral=59.00;
}
while(scannerCheckBox.isSelected()){
scannerPeripheral=415.00;
}
while(microphoneCheckBox.isSelected()){
microphonePeripheral=39.00;
}
while(projectorCheckBox.isSelected()){
projectorPeripheral=549.00;
}
while(plotterCheckBox.isSelected()){
plotterPeripheral=4883.00;
}
return costOneUnit=base+speakerPeripheral+printerPeripheral+scannerPeripheral+microphonePeripheral+projectorPeripheral+plotterPeripheral;
}
public boolean isShipping(){
if(calcWithShippingButton.isSelected()){
return true;
} else{
return false;
}
}
public double getDiscountPercentage(int quantity){
double costOneUnit=calculateCost();
double discountedPrice=0;
while (quantity<100){
discountedPrice=costOneUnit;
}
while (quantity>100&quantity<=199){
discountedPrice=(costOneUnit-(costOneUnit*.01))*quantity;
}
while (quantity>200&quantity<=299){
discountedPrice=(costOneUnit-(costOneUnit*.02))*quantity;
}
while (quantity>300&quantity<=399){
discountedPrice=(costOneUnit-(costOneUnit*.03))*quantity;
}
while (quantity>400&quantity<=499){
discountedPrice=(costOneUnit-(costOneUnit*.04))*quantity;
}
while (quantity>500&quantity<=599){
discountedPrice=(costOneUnit-(costOneUnit*.05))*quantity;
}
while (quantity>600&quantity<=699){
discountedPrice=(costOneUnit-(costOneUnit*.06))*quantity;
}
while (quantity>700&quantity<=799){
discountedPrice=(costOneUnit-(costOneUnit*.07))*quantity;
}
while (quantity>800&quantity<=899){
discountedPrice=(costOneUnit-(costOneUnit*.08))*quantity;
}
while (quantity>900&quantity<=999){
discountedPrice=(costOneUnit-(costOneUnit*.09))*quantity;
}
while(quantity<=1000&quantity>999){
discountedPrice=(costOneUnit-(costOneUnit*.1))*quantity;
}
return discountedPrice;
}
答案 0 :(得分:0)
&#34; 而&#34;在calculateCost()中应该是&#34; 如果&#34;
public double calculateCost(){
...
while(speakerCheckBox.isSelected()){
speakerPeripheral=89.00;
}
while(printerCheckBox.isSelected()){
printerPeripheral=59.00;
}
while(scannerCheckBox.isSelected()){
scannerPeripheral=415.00;
}
....
像
if(speakerCheckBox.isSelected()){
speakerPeripheral=89.00;
}