我有一个数组字符串,我想将第一个元素存储在字符串中,并删除数组中的第一个项,这是我目前所拥有的。
导致我错误的代码是:
public String giveCard(){
shuffle_cards();
String random = deck_list.remove(0);
Log.i("random", random);
return random;
}
这是整页
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class MainActivity extends Activity {
List<String> deck_list;
String[] users_cards, computers_cards;
String[] deck = {
"ace-clubs", "ace-diamonds", "ace-hearts", "ace-spades",
"two-clubs", "two-diamonds", "two-hearts", "two-spades",
"three-clubs", "three-diamonds", "three-hearts", "three-spades",
"four-clubs", "four-diamonds", "four-hearts", "four-spades",
"five-clubs", "five-diamonds", "five-hearts", "five-spades",
"six-clubs", "six-diamonds", "six-hearts", "six-spades",
"seven-clubs", "seven-diamonds", "seven-hearts", "seven-spades",
"eight-clubs", "eight-diamonds", "eight-hearts", "eight-spades",
"nine-clubs", "nine-diamonds", "nine-hearts", "nine-spades",
"ten-clubs", "ten-diamonds", "ten-hearts", "ten-spades",
"jack-clubs", "jack-diamonds", "jack-hearts", "jack-spades",
"queen-clubs", "queen-diamonds", "queen-hearts", "queen-spades",
"king-clubs", "king-diamonds", "king-hearts", "king-spades",
"joker-one", "joker-two"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
shuffle_cards();
users_cards[0] = giveCard();
users_cards[1] = giveCard();
users_cards[2] = giveCard();
users_cards[3] = giveCard();
users_cards[4] = giveCard();
computers_cards[0] = giveCard();
computers_cards[1] = giveCard();
computers_cards[2] = giveCard();
computers_cards[3] = giveCard();
computers_cards[4] = giveCard();
}
public void shuffle_cards(){
deck_list = (Arrays.asList(deck));
Collections.shuffle( deck_list);
String[] shuffle_deck = deck_list.toArray(new String[deck_list.size()]);
Log.d("Shuffled Deck", "arr: " + Arrays.toString(shuffle_deck));
}
public String giveCard(){
shuffle_cards();
String random = deck_list.remove(0);
Log.i("random", random);
return random;
}
}
deck_list = (Arrays.asList(deck));
...
String random = deck_list.remove(0);
Arrays.asList(deck)
返回一个固定大小的List
,因此不能从中删除元素。这就是deck_list.remove(0)
抛出异常的原因。
来自Javadoc:
<T> List<T> java.util.Arrays.asList(T... a)
返回由指定数组支持的固定大小列表。(对返回列表的更改"写入"到数组。)此方法与collection.toArray结合,充当基于数组和基于集合的API之间的桥梁。返回的列表是可序列化的,并实现RandomAccess。
您可以使用
deck_list = new ArrayList<String>(Arrays.asList(deck));
以便创建可变大小的CCD_ 5。
此外,您应该正确地实例化users_cards
和computers_cards
阵列:
String[] users_cards = new String[5];
String[] computers_cards = new String[5];