2016-10-07 42 views
0

我正在用Java編寫一個二十一點程序,並且在學習使用內部類時遇到了一個問題。我試圖實例化一個內部對象Blackjack來調用內部類Card的方法,但程序找不到Blackjack類。我怎麼能去修復這個:無法實例化自己內部的類

import java.util.Scanner; 
import java.util.Deque; 
import java.util.ArrayDeque; 
import java.util.Arrays; 
import java.util.Collections; 
import java.util.Iterator; 

public class Blackjack { 

    int playerWins = 0, dealerWins = 0; 

    // Inner Class - private for encapsulation 
    private class Card { 
     private int suit; 
     private int value; 

     private Card(int suit, int value) { 
      this.suit = suit; 
      this.value = value; 
     } 

     private int getValue() { 
      return value; 
     } 

     private int getSuit() { 
      return suit; 
     } 
    } 

    public static void main(String[] args) { 
     Deque<Card> deck = new ArrayDeque<Card>(); 
     Deque<Card> player = new ArrayDeque<Card>(); 
     Deque<Card> dealer = new ArrayDeque<Card>(); 
     Blackjack game = new Blackjack(); 
     game.createDeck(deck); // Create deck 
     game.shuffle(deck);// Shuffle 
     game.play(deck,player,dealer);// Deal 
    } 
    ... 

試圖編譯時,我得到的錯誤:

Exception in thread "main" java.lang.ClassNotFoundException: Blackjack 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:264) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122) 
+0

它*看起來像你沒有關閉'''Blackjack'類的'}'。 – Bathsheba

+0

請顯示更多真實的代碼。含。導入和類包含主要方法。 – dit

+1

您是否將該類移動到了命名包,但沒有創建新的運行配置? –

回答

0

我已經實現的方法createDeck,隨機播放,播放和類作品correcttly。 下面的代碼:

import java.util.Deque; 
import java.util.ArrayDeque; 

public class Blackjack { 

    int playerWins = 0, dealerWins = 0; 

    private void createDeck(Deque<Card> deck) { 
     System.out.println("createDeck"); 
    } 

    private void shuffle(Deque<Card> deck) { 
     System.out.println("shuffle"); 
    } 

    private void play(Deque<Card> deck, Deque<Card> player, Deque<Card> dealer) { 
     System.out.println("play"); 
    } 

    // Inner Class - private for encapsulation 
    private class Card { 

     private int suit; 
     private int value; 

     private Card(int suit, int value) { 
      this.suit = suit; 
      this.value = value; 
     } 

     private int getValue() { 
      return value; 
     } 

     private int getSuit() { 
      return suit; 
     } 
    } 

    public static void main(String[] args) { 
     Deque<Card> deck = new ArrayDeque<Card>(); 
     Deque<Card> player = new ArrayDeque<Card>(); 
     Deque<Card> dealer = new ArrayDeque<Card>(); 
     Blackjack game = new Blackjack(); 
     game.createDeck(deck); 
     game.shuffle(deck); 
     game.play(deck, player, dealer); 
    } 

} 

編輯:

看你的錯誤,也許是大酒杯類的文件夾不是在classpath中。如果您從包含他的文件夾啓動課程,則必須設置「。」。類路徑中的文件夾。