Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getText NullPointerException_Java_Nullpointerexception - Fatal编程技术网

Java getText NullPointerException

Java getText NullPointerException,java,nullpointerexception,Java,Nullpointerexception,我花了大约2个小时试图理解为什么我的代码总是抛出运行时错误。它不想接受用户输入。。。我很确定我的getext实现是正确的。你们能看看我的代码,帮我看看我做错了什么吗 import java.util.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; public class Mdt1 extends JFrame implements ActionL

我花了大约2个小时试图理解为什么我的代码总是抛出运行时错误。它不想接受用户输入。。。我很确定我的getext实现是正确的。你们能看看我的代码,帮我看看我做错了什么吗

import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;

public class Mdt1 extends JFrame implements ActionListener{

/**
 * 
 */
private static final long serialVersionUID = 1L;
/**
 * @param args
 */
 JTextField twager, dcard1, dcard2, pcard1, pcard2;

public Mdt1()  {
    JFrame blackjack = new JFrame();
    Border wwager = BorderFactory.createTitledBorder("Wager");
    JPanel pwager = new JPanel();
    pwager.setBorder(wwager);
    JLabel lwager = new JLabel("Enter wager:");
    JTextField twager = new JTextField(6);
    twager.addActionListener(this);
    pwager.add(lwager);
    pwager.add(twager);

    JPanel pplayer = new JPanel();
    Border wayer = BorderFactory.createTitledBorder("Player");
    pplayer.setLayout(new BoxLayout(pplayer, BoxLayout.Y_AXIS));
    pplayer.setBorder(wayer);
    pplayer.setSize(100, 100);
    JTextField pcard1 = new JTextField(6);
    pcard1.setEditable(false);
    JTextField pcard2 = new JTextField(6);
    pcard2.setEditable(false);
    pplayer.add(pcard1);
    pplayer.add(pcard2);


    JPanel pdealer = new JPanel();
    Border wealer = BorderFactory.createTitledBorder("Dealer");
    pdealer.setLayout(new BoxLayout(pdealer, BoxLayout.Y_AXIS));
    pdealer.setBorder(wealer);
    pdealer.setSize(100, 100);
    JTextField dcard1 = new JTextField(6);
    dcard1.setEditable(false);
    JTextField dcard2 = new JTextField(6);
    dcard2.setEditable(false);
    pdealer.add(dcard1);
    pdealer.add(dcard2);

    JPanel cards = new JPanel();
    Border wards = BorderFactory.createTitledBorder("Cards");
    cards.setBorder(wards);
    cards.setSize(220, 80);
    cards.add(pplayer);
    cards.add(pdealer);

    JPanel pendgame = new JPanel();
    Border wesult = BorderFactory.createTitledBorder("Endgame");
    pendgame.setBorder(wesult);



    blackjack.setLayout(new BorderLayout());
    blackjack.setVisible(true);
    blackjack.setSize(200, 200);
    blackjack.setTitle("♣ Blackjack ♠");
    blackjack.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    blackjack.add(pwager, BorderLayout.NORTH);
    blackjack.add(cards);
    blackjack.pack();
    blackjack.setResizable(false);

}

public void actionPerformed(ActionEvent e) {
    String swager = twager.getText();
    double wager;
    int  dealer1, dealer2, player1, player2;
    int  dealervalue1, dealervalue2, playervalue1, playervalue2;
    int  dealerTotal, playerTotal;


    wager = Double.parseDouble(swager);

    Random r=new Random();
    // card faces
    dealer1=r.nextInt(13) + 1;
    String sdealer1 = Integer.toString(dealer1);
    dealer2=r.nextInt(13) + 1;
    String sdealer2 = Integer.toString(dealer2);
    player1=r.nextInt(13) + 1;
    String splayer1 = Integer.toString(player1);
    player2=r.nextInt(13) + 1;
    String splayer2 = Integer.toString(player2);
    // Show dealer's card faces
    switch(dealer1)
    {
    case 1: dcard1.setText("Ace "); break;
    case 11: dcard1.setText("Jack"); break;
    case 12: dcard1.setText("Queen"); break;
    case 13: dcard1.setText("King"); break;
    default: dcard1.setText(sdealer1); break; 
    } 
    switch(dealer2)
    {
    case 1: dcard2.setText("Ace"); break;
    case 11: dcard2.setText("Jack"); break;
    case 12: dcard2.setText("Queen"); break;
    case 13: dcard2.setText("King"); break;
    default: dcard2.setText(sdealer2); break;
    } 
    // Show player's card faces
    switch(player1)
    {
    case 1: System.out.print("Ace"); break;
    case 11: System.out.print("Jack"); break;
    case 12: System.out.print("Queen"); break;
    case 13: System.out.print("King"); break;
    default: System.out.print(splayer1); break;
    } 
    switch(player2)
    {
    case 1: System.out.println("Ace"); break;
    case 11: System.out.println("Jack"); break;
    case 12: System.out.println("Queen"); break;
    case 13: System.out.println("King"); break;
    default: System.out.println(splayer2); break;
    } 
    // Determine card values
    dealervalue1 = dealer1; 
    switch(dealer1)
    {
    case 1:  dealervalue1=11; break;
    case 11:  case 12:  case 13:
        dealervalue1=10;  break;
    } // switch
    dealervalue2 = dealer2; 
    switch(dealer2)
    {
    case 1:  dealervalue2=11; break;
    case 11:  case 12:  case 13:
        dealervalue2=10;  break;
    } // switch
    dealerTotal = dealervalue1+dealervalue2;
    if (dealerTotal == 22)      dealerTotal = 12;
    playervalue1 = player1; 
    switch(player1)
    {
    case 1:  playervalue1=11; break;
    case 11:  case 12:  case 13:
        playervalue1=10;  break;
    } // switch
    playervalue2 = player2; 
    switch(player2)
    {
    case 1:  playervalue2=11; break;
    case 11:  case 12:  case 13:
        playervalue2=10;  break;
    } // switch
    playerTotal = playervalue1+playervalue2;
    if (playerTotal == 22)
        playerTotal = 12;
    if (playerTotal == 21)
    { 
        wager = wager * 1.5;
        JOptionPane.showMessageDialog(null, "You have a Blackjack!!! \n You won: $" + wager);

        return;
    }
    if (playerTotal >= dealerTotal)
    {
        System.out.println("" + wager);
        return;
    }
    JOptionPane.showMessageDialog(null, "You lost: $" + wager, "You lost!",  JOptionPane.ERROR_MESSAGE);

    System.out.println(swager);
} 

public static void main(String[] args) {
    // TODO Auto-generated method stub
    /**
     * 2
     * 2-card Blackjack game
     */
    Mdt1 black = new Mdt1();
}// main

}

您有实例字段-
jtextfieldtwager、dcard1、dcard2、pcard1、pcard2
但是在方法
Mdt1()
中,您将
JTextField
的引用存储到本地引用变量中

public Mdt1()  {
    JFrame blackjack = new JFrame();
    Border wwager = BorderFactory.createTitledBorder("Wager");
    JPanel pwager = new JPanel();
    pwager.setBorder(wwager);
    JLabel lwager = new JLabel("Enter wager:");
 //   JTextField twager = new JTextField(6); //<---  Local variable
    twager = new JTextField(6);              //<--- correction
    twager.addActionListener(this);
    pwager.add(lwager);
    pwager.add(twager);
    ....
}
publicmdt1(){
JFrame blackjack=新JFrame();
Border wwager=BorderFactory.createTitledBorder(“下注”);
JPanel pwager=新的JPanel();
采购订单管理人(wwager);
JLabel lwager=新JLabel(“输入下注:”);

//JTextField twager=new JTextField(6);//您在构造函数中用另一个同名变量隐藏了类实例变量twager。实际上,您从未初始化过类实例。

在构造函数中,您正在重新声明作为类变量的变量

您的类变量是jtextfieldtwager、dcard1、dcard2、pcard1、pcard2

在名为Mdt1()的构造函数中初始化这些变量,然后在本地创建它们

例如,行JTextField twager=新的JTextField(6); 应更改为twager=new JTextField(6);如果希望修复问题

这应该可以解决问题