2015-01-06 4 views
-3

Мне нужно, чтобы переменная orderNum увеличивалась для каждого номера заказа на 1. Теперь это в операторе switch, я попробовал цикл for и orderNum ++, но то, что происходит, это orderNum, просто дает мне 1 за каждое заявление. Поэтому я не уверен, где я поступил неправильно, я искал сеть, но пока не могу найти ответ.Приращение Java на 1 в операторе switch

Спасибо за вашу помощь

public class orders extends javax.swing.JFrame{ 

private char productName; 
private char productCode; 
private double price; 
private double discount; 
private int quantity; 
private double total; 
private String message; 
private int orderNum; 
private final double MAXORDER = 1000; 
private final double MINORDER = 0.1; 

orders(char productCode, int quantity) { 
this.productCode = productCode; 
this.quantity = quantity; 
} 
public String calculate() { 
double price = 0; 
//int i = 0; 
String productName= " "; 
boolean isDiscounted = false; 
boolean isValidOrder = true; 

if (quantity > MAXORDER){ 
    message = "**ERROR** Invalid quantity. Quantity cannot be greater than 1000"; 
    isValidOrder = false; 
    } 
else if (quantity < MINORDER){ 
    message = "**ERROR** Invalid quantity. Quantity cannot be 0 or less "; 
    isValidOrder = false; 
} 

if (isValidOrder) { 
int orderNum =0; 
// while (i<100){ 
switch (productCode) { 
    case 'A': 
     orderNum+=1; 

     productName = "Pencil"; 
     price = quantity * 0.60; 

     break; 

    case 'b': 
     orderNum+=1; 

     productName = "Rubber"; 
     price = quantity * 0.90; 

     break; 

    case 'c': 
     orderNum+=1; 
     productName = "Meat"; 
     price = quantity * 100.00; 

     break; 

     default: 
     isValidOrder = false; 
     message = "Not this time"; 
     break; 
     } 

     if(isValidOrder){ 
    message = "Order Number: " + orderNum + "\n" + "You are buying " + productName +  "\n" + "The quantity of: " + quantity + "\n" + "For the price of $" + price; 
    System.out.println("Tom is : " + orderNum); 
    } 
    } 
// } 
    return message; 
    } 
} 

ответ

1

Вы определения двух переменных: orderNum поле члена класса и локальную переменную внутри метода. Локальная переменная всегда будет инициализирована до нуля для каждого метода invokation, поэтому вам нужно удалить ее, чтобы увеличить полевую переменную.

+0

Ok спасибо за вашу помощь я знал, что это было что-то я пропустил все хорошо сейчас – warwick

2

Вы только что объявили orderNum как 0, я думаю, вы хотели его как члена класса. Кроме того, я рекомендую ++ вместо += 1. Что-то вроде

private static int orderNum = 0; 

public String calculate() { 
    double price = 0; 
    // int i = 0; 
    String productName = " "; 
    boolean isDiscounted = false; 
    boolean isValidOrder = true; 

    if (quantity > MAXORDER) { 
     message = "**ERROR** Invalid quantity. Quantity cannot be greater than 1000"; 
     isValidOrder = false; 
    } else if (quantity < MINORDER) { 
     message = "**ERROR** Invalid quantity. Quantity cannot be 0 or less "; 
     isValidOrder = false; 
    } 

    if (isValidOrder) { 
     // while (i<100){ 
     switch (productCode) { 
     case 'A': 
      orderNum++; 
      productName = "Pencil"; 
      price = quantity * 0.60; 
      break; 
     case 'b': 
      orderNum++; 
      productName = "Rubber"; 
      price = quantity * 0.90; 
      break; 
     case 'c': 
      orderNum++; 
      productName = "Meat"; 
      price = quantity * 100.00; 
      break; 
     default: 
      isValidOrder = false; 
      message = "Not this time"; 
      break; 
     } 

     if (isValidOrder) { 
      message = "Order Number: " + orderNum + "\n" 
        + "You are buying " + productName + "\n" 
        + "The quantity of: " + quantity + "\n" 
        + "For the price of $" + price; 
      System.out.println("Tom is : " + orderNum); 
     } 
    } 
    // } 
    return message; 
} 
1

Вы shadowed переменная orderNum, объявив его после if(isValidOrder), удалите его и все должно быть хорошо

Смежные вопросы