为新变量赋值
assign value to new variable?
我的代码如下:
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Random;
/**
*
* @author Matt
*/
public class Deck {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Random r = new Random();
String[][] DeckOfCards = new String[13][4];
int i;
int j;
int k;
String suit[] = new String[4];
String number[] = new String[13];
ArrayList draw = new ArrayList();
//setting up the deck
suit[0]="Diamonds, ";
suit[1]="Clubs, ";
suit[2]="Hearts, ";
suit[3]="Spades, ";
number[0]="Ace of ";
number[1]="Two of ";
number[2]="Three of ";
number[3]="Four of ";
number[4]="Five of ";
number[5]="Six of ";
number[6]="Seven of ";
number[7]="Eight of ";
number[8]="Nine of ";
number[9]="Ten of ";
number[10]="Jack of ";
number[11]="Queen of ";
number[12]="King of ";
//dealing the initial hand
for(j=0;j<3;j++){
for(i=0;i<12;i++){
DeckOfCards[i][j]=""+number[i]+suit[j];
draw.add(DeckOfCards[i][j]);
//System.out.println(DeckOfCards[i][j]);
}
//System.out.println("");
// System.out.println("");
}
ArrayList drawn = new ArrayList();
ArrayList hand = new ArrayList();
int u;
for(u=1;u<6;u++){
k=r.nextInt(52);
if(!drawn.contains(k)){
//System.out.println(draw.get(k));
hand.add(u+" "+draw.get(k).toString());
drawn.add(k);
}
else{
u--;
}
}
System.out.println(hand.toString());
但是最后一个if语句:
if(!drawn.contains(k)){
hand.add(u+" "+draw.get(k).toString());
drawn.add(k);)
总是停止编译说我需要给新变量分配一个返回值?在if语句之前,k已经被赋值。当我把随机k语句放在if语句中时,它似乎有效,但这会使它变得毫无价值,不是吗?编辑器本身没有错误,但当我编译时,它会给我以下信息:
线程"main"java.lang.IndexOutOfBoundsException异常:索引:41,大小:36位于java.util.ArrayList.rangeCheck(ArrayList.java:635)位于java.util.ArrayList.get(ArrayList.java:411)在甲板上。Deck.main(Deck.java:74)Java结果:1构建成功(总时间:0秒)
我完全没有办法解决这个问题。
你的牌组中没有足够的牌。您正在获取和索引越界,因为您正试图访问不存在的draw.get(41)
,因为draw
的大小只有36。这是因为您对draw
的初始化不正确。你的错误代码是:
for(j=0;j<3;j++){
for(i=0;i<12;i++){
DeckOfCards[i][j]=""+number[i]+suit[j];
draw.add(DeckOfCards[i][j]);
//System.out.println(DeckOfCards[i][j]);
}
//System.out.println("");
// System.out.println("");
}
在上面只增加了3套,每套12套。(36张卡片)。你应该增加4套西装,每套13套。也许你的意思是说小于或等于过for (j=0; j<=3; j++)
,而不是仅仅小于。
你的问题是你试图从52张随机牌中抽取一张,但你的牌组中只有36张:
for(j=0;j<3;j++){ // should be j<4
for(i=0;i<12;i++){ // should be i<13
DeckOfCards[i][j]=""+number[i]+suit[j];
draw.add(DeckOfCards[i][j]);
//System.out.println(DeckOfCards[i][j]);
}
//System.out.println("");
// System.out.println("");
}
相关文章:
- Javascript变量赋值|
- 如何在javascript中为全局变量赋值
- 未设置变量的赋值| jQuery的作用是什么
- 我可以在javascript中的回调函数中为变量赋值吗
- 如何在不赋值数组变量的情况下读取数组数据
- JavaScript 变量赋值的行为令人惊讶
- 为什么 Javascript 在变量赋值时将 null 转换为字符串
- JavaScript: 变量赋值 in for 语句 |在前面或里面
- 在 IF Javascript 中赋值变量
- 变量“this”上下文在重新赋值变量后未更新
- 在赋值变量中查找值
- 赋值变量新值以更改元素节点值
- 给对象赋值.变量动态形成
- 如何在函数内部使用赋值变量,在函数之外
- Javascript赋值变量if为nil
- 从可能未定义的字段中赋值变量
- 量角器在赋值变量时抛出错误
- 用$. getjson赋值变量
- jQuery使用click()赋值变量
- mongodb在赋值变量时打印结果