为什么我的二十一点分数的总和无法正常工作



我在编程方面很新,我一直在尝试在Java上创建一个简单的二十一点游戏,但是我对分数计数有问题。

有时它会识别实际的卡值并正常工作,其他则只是定义了整个游戏的随机值和混乱。我已经使用1到52的数字将卡随机定义为"数组",因此将它们设置为" Jlabel"作为游戏流动。分数计数设置为"开关",该"开关"定义了每张卡的值。

这是我的代码,请帮助我:

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
card= new int[53];
Amount = Double.parseDouble(Apuesta);
Apuesta = jTextField1.getText();      
BilleteraT = Double.toString(Billetera-Amount); 
jTextField2.setText(BilleteraT);

if (Apuesta.equalsIgnoreCase("0")) {
JOptionPane.showMessageDialog(null, "Por Favor, ingrese una apuesta");}
else {
step2 = false;
if(step1=true){
Apuesta = jTextField1.getText();
Amount = Double.parseDouble(Apuesta);
Billetera=Billetera-Amount;
BilleteraT = Double.toString(Billetera); 
jTextField2.setText(BilleteraT);}

while(Amount <= Billetera && Amount!=0 || Billetera>=0&& Amount!=0){
jButton5.setVisible(false);
jButton5.invalidate();    
for (k=1;k<=6;k++){    
card[k]=rnd.nextInt(53)+1;
switch (k){
    case 1: p1= card[1];
    case 2: p2= card[2];
    case 3: c1= card[3];
    case 4: c2= card[4];
    case 5: p3= card[5];
    case 6: c3= card[6];}}
jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/"+p1+".png")));
jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/"+p2+".png")));
jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/"+c1+".png")));
jLabel4.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
for (k=1;k<=53;k++){      
switch(k){
    case 1:case 14:case 27:case 40:
    if(k==p1){scorep1=2;} if(k==p2){scorep2=2;}
    if(k==c1){scorec1=2;} if(k==c2){scorec2=2;}
    if (k==p3){scorep3=2;}
    if (k==c3){scorec3=2;}
    break;
    case 2:case 15:case 28:case 41:
    if(k==p1){scorep1=3;} if(k==p2){scorep2=3;}
    if(k==c1){scorec1=3;} if(k==c2){scorec2=3;}
    if (k==p3){scorep3=3;}
    if (k==c3){scorec3=3;}
    break;
    case 3:case 16:case 29:case 42:
    if(k==p1){scorep1=4;} if(k==p2){scorep2=4;}
    if(k==c1){scorec1=4;} if(k==c2){scorec2=4;}
    if (k==p3){scorep3=4;}
    if (k==c3){scorec3=4;}
    break;
    case 4:case 17:case 30:case 43:
    if(k==p1){scorep1=5;} if(k==p2){scorep2=5;}
    if(k==c1){scorec1=5;} if(k==c2){scorec2=5;}
    if (k==p3){scorep3=5;}
    if (k==c3){scorec3=5;}
    break;
    case 5:case 18:case 31:case 44:
    if(k==p1){scorep1=6;} if(k==p2){scorep2=6;}
    if(k==c1){scorec1=6;} if(k==c2){scorec2=6;}
    if (k==p3){scorep3=6;}
    if (k==c3){scorec3=6;} 
    break;
    case 6:case 19:case 32:case 45:
    if(k==p1){scorep1=7;} if(k==p2){scorep2=7;}
    if(k==c1){scorec1=7;} if(k==c2){scorec2=7;}    
    if (k==p3){scorep3=7;}
    if (k==c3){scorec3=7;} 
    break;
    case 7:case 20:case 33:case 46:
    if(k==p1){scorep1=8;} if(k==p2){scorep2=8;}
    if(k==c1){scorec1=8;} if(k==c2){scorec2=8;}
    if (k==p3){scorep3=8;}
    if (k==c3){scorec3=8;} 
    break;
    case 8:case 21:case 34:case 47:
    if(k==p1){scorep1=9;} if(k==p2){scorep2=9;}
    if(k==c1){scorec1=9;} if(k==c2){scorec2=9;}    
    if (k==p3){scorep3=9;}
    if (k==c3){scorec3=9;} 
    break;
    case 9:case 11:case 12:case 13:case 22:case 24:case 25:case 26:case 35:case 37:case 38:case 39:case 48:case 50:case 51:case 52:
    if(k==p1){scorep1=10;} if(k==p2){scorep2=10;}
    if(k==c1){scorec1=10;}  if(k==c2){scorec2=10;}
    if (k==p3){scorep3=10;}
    if (k==c3){scorec3=10;} 
    break;
    case 10:case 23:case 36:case 49:
    if(k==p1){scorep1=1;} if(k==p2){scorep2=1;}
    if(k==c1){scorec1=1;} if(k==c2){scorec2=1;}
    if (k==p3){scorep3=1;}
    if (k==c3){scorec3=1;} 
    break;}}
    scoreP=scorep1+scorep2;
    scoreC=scorec1;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); 
    step1=true;}
    if(Amount!=0&&Billetera>0 || Billetera<=0 ){JOptionPane.showMessageDialog(null,"No podeis apostar lo que no tenes!!!");} 

}
}                                        
/** PEDIR BUTTON  */
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
if (step1=true && Billetera>0){
    if (step2=true && Billetera>0){
    p4=rnd.nextInt(53)+1;
     for (k=1;k<=53;k++){      
switch(k){
    case 1:case 14:case 27:case 40:    
    if (k==p4){scorep4=2;}
    if (k==c4){scorec4=2;}
    break;
    case 2:case 15:case 28:case 41:
    if (k==p4){scorep4=3;}
    if (k==c4){scorec4=3;}
    break;
    case 3:case 16:case 29:case 42:
    if (k==p4){scorep4=4;}
    if (k==c4){scorec4=4;}
    break;
    case 4:case 17:case 30:case 43:
    if (k==p4){scorep4=5;}
    if (k==c4){scorec4=5;}
    break;
    case 5:case 18:case 31:case 44:
    if (k==p4){scorep4=6;}
    if (k==c4){scorec4=6;} 
    break;
    case 6:case 19:case 32:case 45:
    if (k==p4){scorep4=7;}
    if (k==c4){scorec4=7;} 
    break;
    case 7:case 20:case 33:case 46:
    if (k==p4){scorep4=8;}
    if (k==c4){scorec4=8;} 
    break;
    case 8:case 21:case 34:case 47:
    if (k==p4){scorep4=9;}
    if (k==c4){scorec4=9;} 
    break;
    case 9:case 11:case 12:case 13:case 22:case 24:case 25:case 26:case 35:case 37:case 38:case 39:case 48:case 50:case 51:case 52:
    if (k==p4){scorep4=10;}
    if (k==c4){scorec4=10;} 
    break;
    case 10:case 23:case 36:case 49:
    if (k==p4){scorep4=1;}
    if (k==c4){scorec4=1;} 
    break;}}
    scoreP=scorep4+scoreP;
    score1 = Double.toString(scoreP);
    jTextField3.setText(score1);
    jLabel11.setIcon(new ImageIcon(getClass().getResource("/img/"+p4+".png")));
    }
    jLabel11.setIcon(new ImageIcon(getClass().getResource("/img/"+p3+".png")));
    scoreP=scorep3+scoreP;
    score1 = Double.toString(scoreP);
    jTextField3.setText(score1);
    step2 = true;

    if (scoreP==21){JOptionPane.showMessageDialog(null,"Felicitaciones, Ganaste!");
    Billetera=Billetera+Amount*2;
    BilleteraT = Double.toString(Billetera); 
    jTextField2.setText(BilleteraT);
    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2);} 
    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}       
    if (scoreP>21){JOptionPane.showMessageDialog(null,"Uhh,Pasaste, mas suerte en la proxima!");
    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2);}
    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}
}
}                                        
/** PLANTARSE BUTTON  */
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
JOptionPane.showMessageDialog(null,"Okay, Mi turno!");
if (step1=true&&Billetera>0){
 scoreC=scorec2+scoreC;
 score2 = Double.toString(scoreC);
 jTextField4.setText(score2);
 jLabel4.setIcon(new ImageIcon(getClass().getResource("/img/"+c2+".png")));
 if(scoreC<=16){resc="hit";
 while(resc.equals("hit")){
 jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/"+c3+".png")));
 scoreC=scorec3+scoreC;
 score2 = Double.toString(scoreC);
 jTextField4.setText(score2);
 if(scoreC<=16){resc="hit";}
 if(scoreC>16){resc="stand";}}
 }else if(scoreC>16){resc="stand";}
 while(resc.equals("stand")){
if (scoreC>scoreP&&scoreC<=21){JOptionPane.showMessageDialog(null,"Gano yo, mas suerte en la proxima!");
    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); }
    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}
if(scoreP>scoreC&&scoreP<=21){JOptionPane.showMessageDialog(null,"Felicitaciones, Ganaste!");
    Billetera=Billetera+Amount*2;
    BilleteraT = Double.toString(Billetera); 
    jTextField2.setText(BilleteraT);
    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2);}
    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}

if(scoreP==scoreC&&scoreP<=21){JOptionPane.showMessageDialog(null,"Es un Empate!");
    res=JOptionPane.showInputDialog("Queres jugar de nuevo?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); } 
    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}
    }
}
} 
}                                        
 /** DESISTIR BUTTON  */
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    if (step1=true && Billetera>0){
    JOptionPane.showMessageDialog(null,"Bueno, mas suerte en la proxima!");
    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); }
    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}    
} 

我没有附近的编译器,但是这是我通过阅读您的代码看到的错误。

您在哪里声明:card = new Int [53];它正在创建一个从0-52的数组,实际上是53个值,因此假设您有53张卡。适当的声明将是:card = new int [52];因为那样,它是从0-51的数组制成52个值的数组。

最新更新