2016-10-07 44 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中。如果您从包含他的文件夹启动课程,则必须设置“。”。类路径中的文件夹。