即使我知道这可能是一个非常简单的错误,我似乎也找不到答案,但我仍希望得到一些帮助。 我要完成的工作是创建一副纸牌,但我一直遇到错误。 这是我的代码:
卡类:
public class Card {
private String suit;
private int face;
public Card(int face, String suit){
face = this.face;
suit = this.suit;
}
public int getFace(){
return face;
}
public String getFaceAsString(int face){
int faceName = face;
String faceString = "";
if(faceName == 11){
faceString = "J";
} else if(faceName == 12){
faceString = "Q";
} else if(faceName == 13){
faceString = "K";
} else if(faceName == 14){
faceString = "A";
} else {
faceString = Integer.toString(faceName);
}
return faceString;
}
public String getSuit(){
return suit;
}
public void setSuit(String suit){
this.suit = suit;
}
}
这是我的主要课程:
import java.util.Random;
import java.util.Scanner;
public class Hero_Game {
public static void main(String[] args) {
String[] suits = {"Spades","Clubs","Hearts","Diamonds"};
int[] faces = {2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int index = 0;
Card[] deck = new Card[52];
for(int i = 0; i<suits.length;i++){
for(int j = 0; j<faces.length;j++){
deck[index] = new Card(faces[i],suits[j]);
index++;
}
}
答案 0 :(得分:1)
您在for循环中切换了面索引和西服数组。应该是:
for(int i = 0; i<suits.length;i++){
for(int j = 0; j<faces.length;j++){
deck[index] = new Card(faces[j],suits[i]);
index++;
}
}
答案 1 :(得分:1)
“面孔”数组中还有一个额外的数字-您尝试创建14 * 4 = 56张卡片,而不是13 * 4 = 52张。
答案 2 :(得分:1)
class ByEntire extends AsyncTask<Void, Void, String> {
String target;
ProgressDialog dialog = new ProgressDialog(getActivity());
@Override
protected void onPreExecute(){
try{
target = "http://wook1150.cafe24.com/ByEntire.php";
dialog.setMessage("로딩중");
dialog.show();
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
protected String doInBackground(Void... voids) {
try {
URL url = new URL(target);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String temp;
StringBuilder stringBuilder = new StringBuilder();
while ((temp = bufferedReader.readLine()) !=null)
{
stringBuilder.append(temp + "\n");
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
} catch (Exception e)
{
e.printStackTrace();
}
return null;
}
@Override
public void onProgressUpdate(Void... values){
super.onProgressUpdate();
}
@Override
public void onPostExecute(String result){
try{
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("response");
int count = 0;
int courseID;
String courseGrade;
String courseTitle;
String courseProfessor;
int courseCredit;
int courseDivide; //////Error here//////
int coursePersonnel;
String courseTime;
while(count < jsonArray.length()){
JSONObject object = jsonArray.getJSONObject(count);
courseID = object.getInt("courseID");
courseGrade = object.getString("courseGrade");
courseTitle = object.getString("courseTitle");
courseProfessor = object.getString("courseProfessor");
courseCredit = object.getInt("courseCredit");
courseDivide = object.getInt("courseDivide)");
coursePersonnel = object.getInt("coursePersonnel)");
courseTime = object.getString("courseTime)");
rankList.add(new Course(courseID, courseGrade, courseTitle, courseCredit, courseDivide, coursePersonnel,courseTime, courseProfessor));
count++;
dialog.dismiss();
}
rankListAdapter.notifyDataSetChanged();
}catch (Exception e){
e.printStackTrace();
}
}
}
摆脱 15 并按照@Geshode的建议进行循环
答案 3 :(得分:1)
为什么您有14张而不是13张?
在任何情况下,为了更安全地在卡座数组中分配正确数量的项目,请使用int numCardsInDeck = suits.length * faces.length;
计算卡座中的项目总数。
尝试以下方法:
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Game {
public static class Card {
final int face;
final String suit;
public Card(int face, String suit) {
this.face = face;
this.suit = suit;
}
@Override
public String toString() {
return face + " of " + suit;
}
}
public static void main(String[] args) {
String[] suits = {"Spades","Clubs","Hearts","Diamonds"};
int[] faces = {2,3,4,5,6,7,8,9,10,11,12,13,14};
int index = 0;
int numCardsInDeck = suits.length * faces.length;
Card[] deck = new Card[numCardsInDeck];
for(int i = 0; i < suits.length; i++) {
for(int j = 0; j < faces.length; j++) {
deck[index] = new Card(faces[j],suits[i]);
index++;
}
}
System.out.println(Arrays.toString(deck));
}
}