2016-03-24 10 views
0

Görevlerim için bir bankacılık uygulaması oluşturuyorum, if/else ifadesinden başka bir sınıfı çağırmanın mümkün olup olmadığını bilmek ister misiniz? eğer öyleyse, nerede yanlış gittim? derlemeden önce olduğu gibi, hiç hata alıyorum, ancak çalıştırmaya çalışırken birçok hata. CurrentAccount.java sınıfında 'public void currentAccountCreate' i çağırmak istiyorum. Ayrıca bir ana menü sayfam var. çok teşekkürler Burada if/else ifadesinden farklı bir sınıfı nasıl arayabilirim?

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"); 
      } 
     } 
    } 
} 

Aramaya çalışıyorum ne

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

Hata StackTrace

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

hataları sonrası .. dizisindeki –

+0

"ana" java.lang.StackOverflowError sun.util.locale.provider.DecimalFormatSymbolsProviderImpl.getInstance de java.util.Currency.getInstance (Bilinmeyen Kaynak) de \t (Bilinmeyen Kaynak) \t java.text.DecimalFormatSymbols.getInstance at assignmentmine.Account adresinde. Assignmentmine.currentAccount adresinden (Account.java:7) \t. (currentAccount.java:5) Ayrıca, daha fazla ilgili olanlar – R0ckTillWeDr0p

+1

Sorunu currentAccount içeriğini içerecek şekilde düzenlemeniz gerekecektir. Bazı para birimi yöntemine geçersiz bir şey geçirdiğiniz anlaşılıyor –

cevap

0

Bir sınıf "çağrı" olamaz, ancak bir bir nesne başlatabilir sınıfını ve kamu işlevlerini kullanır. Ayrıca, hangi sınıfı aramak istediğinizi söylediyseniz, da yardımcı olacaktır. İki sınıf Checking ve Savings varsa

Örneğin, böyle bir if/else deyimi içine onları başlatmaya olacaktır:

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

Ancak, soru akımının başka örneğini oluşturma hakkında olsaydı sınıf, sonra yapmanız gereken tek şey, sınıfın kendi içinde mevcut sınıfın bir nesnesini başlatmaktır. İşte bir örnek:

public class Checking { 
    Checking obj; 
} 

Not:

  • süre döngü durdurmak için bir yol vardır, sonsuza kadar tekrar ediyor!
+0

Eğer kullanıcı 'current' yazıyorsa IDE'nin kodumu 'currentAccount' sınıfımdan açması yerine, – R0ckTillWeDr0p

+0

hesap türü seçimi ile aynı sınıfa yazmam gerekiyor. sınıfı "ara". Kullanıcı 'Current' hesabını seçmeye karar verdiyse, o sınıfın bir nesnesini if ​​/ else ifadesinin içinde yaratmanız ve o nesneyi' Current' sınıfı içindeki işlevleri kullanmak için kullanmanız gerekir. – Bader