2016-03-24 48 views
0

我正在爲我的任務創建銀行應用程序,我想知道是否可以從if/else語句調用另一個類?如果是的話,我哪裏錯了?因爲在編譯之前,我不會遇到任何錯誤,但在嘗試運行時會出現很多錯誤。我想在currentAccount.java類中調用「public void currentAccountCreate」。我也有一個主菜單頁面。 非常感謝如何從if/else語句中調用不同的類?

import java.util.Scanner; 

public class Account { 
    Scanner keyboard = new Scanner(System.in); 

    currentAccount currentAccountCreating = new currentAccount(); 
    //savingsAccount savingsAccountCreating = new savingsAccount(); 

    public void accountCreation(){ 
     String createOption = ""; 
     boolean valid = false; 
     while (!valid) { 
      System.out.println("What account would you like to create?"); 
      System.out.println("Current or savings?"); 
      createOption = keyboard.nextLine(); 
      if (createOption.equalsIgnoreCase("current")) { 
       currentAccountCreating.currentAccountCreate(); 
      } else { 
       System.out.println("Invalid account type selected. Please enter checking or savings"); 
      } 
     } 
    } 
} 

這裏的我想叫什麼

public class currentAccount extends Account { 
    public void currentAccountCreate() { 

錯誤堆棧跟蹤

Exception in thread "main" java.lang.StackOverflowError 
    at java.util.Currency.getInstance(Unknown Source) 
    at sun.util.locale.provider.DecimalFormatSymbolsProviderImpl.getInstance(Unknown Source) at java.text.DecimalFormatSymbols.getInstance(Unknown Source) 
    at assignmentmine.Account.<init>(Account.java:7) 
    at assignmentmine.currentAccount.<init>(currentAccount.java:5) 
    // Plus a load more related ones 
+2

發佈錯誤.. –

+0

異常線程 「main」 java.lang.StackOverflowError的 \t在java.util.Currency.getInstance(來源不明)在sun.util.locale.provider.DecimalFormatSymbolsProviderImpl.getInstance(未知源) \t位於assignmentmine.Account的java.text.DecimalFormatSymbols.getInstance(Unknown Source)。 (Account.java:7) \t at assignmentmine.currentAccount。 (currentAccount.java:5)加載更多相關的文件 – R0ckTillWeDr0p

+1

您必須編輯問題以包含currentAccount的內容。它看起來像你傳遞一些無效的東西到一些貨幣方法 –

回答

0

你不能「呼」的一類,但你可以初始化的對象並使用其公共職能。 另外,如果你說你希望打電話給什麼班,這將會有所幫助。

舉例來說,如果我有兩個類CheckingSavings我將它們初始化一個if/else語句裏面是這樣的:

//pseudocode 
if (something) 
    Checking obj; 
else 
    Savings obj; 

然而,如果你的問題是關於創建當前的另一個實例類,那麼你所需要做的就是在類本身內初始化當前類的一個對象。這裏有一個例子:

public class Checking { 
    Checking obj; 
} 

注:

  • while循環沒有辦法停下來,它不斷重複,直到永遠!
+0

如果用戶在'current'中輸入我想要IDE從我的類'currentAccount'中打開代碼,而不是像我選擇的帳戶類型那樣在類中編寫代碼 – R0ckTillWeDr0p

+0

您不需要重寫或「打電話」這個班級。如果用戶決定選擇'Current'帳戶,那麼您需要在if/else語句內創建該類的對象,然後使用該對象來使用'Current'類中的函數。 – Bader