2016-05-06 13 views
1

Versuch, ein Array mit Getter zu füllen, das Problem ist, das Array voll mit der gleichen Anzahl, und wenn die Wertänderung in dem zweiten Eingang die Lochanordnung wieder ändert:Java_Fill ein Array von Getter

public class Payment { 

Scanner kb = new Scanner(System.in); 
private int operationNum = 0; 
private int subOperationNum = 0; 
private double reMoney = 0; 

public int getOperationNum() { 
    return operationNum; 
} 

public int getSubOperationNum() { 
    return subOperationNum; 
} 

public double getReMoney() { 
    return reMoney; 
} 

public void setOperationNum(int operationNum) { 
    this.operationNum = operationNum; 
} 

public void setSubOperationNum(int subOperationNum) { 
    this.subOperationNum = subOperationNum; 
} 

public void setReMoney(double reMoney) { 
    this.reMoney = reMoney; 
} 

public void operationsLoop() { 
    double [] a = new double[17]; 
    do { 
     System.out.println("\n1- Cash"); 
     System.out.println("2- Car"); 
     System.out.println("3- Clothing"); 
     System.out.println("4- Credit Card"); 
     System.out.println("5- Food"); 
     System.out.println("6- Education"); 
     System.out.println("7- Electronics"); 
     System.out.println("8- Groceries"); 
     System.out.println("9- Health & Fitness"); 
     System.out.println("10- Medical"); 
     System.out.println("11- Travel"); 
     System.out.println("12- Utilities"); 
     System.out.println("13- Finish"); 
     System.out.print("\nEnter the number of operation : "); 
     this.setOperationNum(kb.nextInt()); 
     this.operation2(); 
     this.operation12(); 
     this.collectReMoney(); 
     **for(int i = 0; i<a.length;i++){ 
      a[i] = this.getReMoney(); 
      System.out.print(a[i] + ", "); 
     }** 
    } while (operationNum < 13); 
} 

public void operation2() { 
    if (this.getOperationNum() == 2) { 
     System.out.println("\t1- Gas"); 
     System.out.println("\t2- Repair"); 
     System.out.println("\t3- Monthly Payment"); 
     System.out.print("\nEnter your chose : "); 
     this.setSubOperationNum(kb.nextInt()); 
    } 
} 

public void operation12() { 
    if (this.getOperationNum() == 12) { 
     System.out.println("\t1- Electricity"); 
     System.out.println("\t2- Gas"); 
     System.out.println("\t3- Telephone"); 
     System.out.println("\t4- Water"); 
     System.out.print("\nEnter your chose : "); 
     this.setSubOperationNum(kb.nextInt()); 
    } 
} 


public void collectReMoney() { 
    if (this.getOperationNum() == 1) { 
     System.out.print("Withdraw = "); 
     this.setReMoney(kb.nextDouble()); 
    } else if (this.getOperationNum() == 4 || (this.getOperationNum() == 2 && this.getSubOperationNum() == 3)) { 
     System.out.print("Payment = "); 
     this.setReMoney(kb.nextDouble()); 
    } else if (this.getOperationNum() == 9 || this.getOperationNum() == 10) { 
     System.out.print("Pay = "); 
     this.setReMoney(kb.nextDouble()); 
    } else if (this.getOperationNum() != 13) { 
     System.out.print("Spend = "); 
     this.setReMoney(kb.nextDouble()); 
    } 
} 

und wenn Ich füge der Array-Schleife "this.setReMoney (0);" nur der erste Wertänderungs

, wenn der Benutzer einen Wert i in dem Array eingefügt werden soll Eingabe entsprechend dem Betriebsnummer und die übrigen Werte der anderen Operationen Null

+0

Es ist unklar, was Sie erreichen möchten. – cyroxis

+1

'double reMoney' ist kein Array ist eine Variable, die nur einen einzigen Wert enthalten kann. – Priyamal

+0

@cyroxis wenn der Benutzer einen Wert eingeben möchte ich es in das Array nach der Operationsnummer einfügen und die Ruhewerte der anderen Operationen sollte Null sein – user3435095

Antwort

1

In der for-Schleife sein, sollten Sie zuweisen die gleiche Anzahl an jedes der Elemente des Arrays, um zu verhindern, dass Sie die Zuweisung Betrieb außerhalb der for-Schleife nehmen sollte:

a[operationNum - 1] = this.getReMoney(); 
for(int i = 0; i<a.length;i++){ 
    System.out.print(a[i] + ", "); 
} 

stellen Sie außerdem sicher, dass Sie für ArrayIndexOutOfBoundsException im Fall überprüfen wählt der Benutzer eine Option Nummer größer als die Größe des Arrays.

+0

danke ... das Array wird jetzt die Werte einfügen, wie Sie in Operation 2 und 12 sehen können der Benutzer muss auch eine Aktion wählen, so wird es für die Unteroperationen zwei arbeiten? – user3435095

+0

Es wird nicht überschrieben, welcher Wert auf Position (2-1) und (12-1) gespeichert wird. Sie könnten vielleicht zusätzliche Arrays für die Optionen 2 und 12 erstellen. Oder fügen Sie die zusätzlichen Werte an den Speicherplatz an, der vom ursprünglichen Array übrig ist. – osocron

+0

also muss ich ein anderes Array für 2 und 12 erstellen, um dort Werte ohne Überschreiben zu bekommen ?? – user3435095