Java数组。长度不正确

Java数组。长度不正确,java,eclipse,Java,Eclipse,我刚刚开始一个战争纸牌游戏。我做了一副牌,然后需要重新洗牌。不管怎样,我需要的。长度是正确的。所以当我使用长度时,它得到了160作为一个答案,而当我数的时候它应该是52。这是代码 import java.util.List; public class wargame { public static void main(String args[]){ funtionsforwargame funtionsforwargame=new funtionsforwargame(

我刚刚开始一个战争纸牌游戏。我做了一副牌,然后需要重新洗牌。不管怎样,我需要的。长度是正确的。所以当我使用长度时,它得到了160作为一个答案,而当我数的时候它应该是52。这是代码

import java.util.List;

public class wargame {
    public static void main(String args[]){
        funtionsforwargame funtionsforwargame=new funtionsforwargame();
        funtionsforwargame.instructions();
        List<String> randomized_deck=funtionsforwargame.get_deck();
        String[] deck_convert = randomized_deck.toArray(new String[0]);
        String deck=java.util.Arrays.toString(deck_convert);
        System.out.println(deck);
        System.out.println(deck.length());

    }

}
import java.util.List;
公营作战游戏{
公共静态void main(字符串参数[]){
FunctionsForargame FunctionsForargame=新FunctionsForargame();
FunctionsForOrganame.instructions();
List randomized_deck=FunctionsForOrganame.get_deck();
String[]deck_convert=随机化_deck.toArray(新字符串[0]);
String deck=java.util.Arrays.toString(deck\u convert);
系统输出打印LN(甲板);
System.out.println(deck.length());
}
}
另外,get_deck方法创建一个deck作为数组,然后转换为列表字符串并返回它,因为它需要被洗牌。然后我把返回的列表转换回数组,然后确保它给了我一副牌,而不是类似的东西ghty@67843. 因此,如果有人知道为什么它给我160而不是52,那将是有帮助的。下面是get_deck方法,以防您不相信列表/数组中有52个

public class funtionsforwargame {
    public void instructions(){
        System.out.println("Welcome to War!");
        System.out.println("The object of the game is to collect all cards from the other person.");
        System.out.println("Basically, all you do is watch and press any key to go to the next round.");
        System.out.println("Good luck!!!");
    }
    public List<String> get_deck(){
        String new_deck[]={"A","A","A","A","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","6","6","6","6","7","7","7","7","8","8","8","8","9","9","9","9","10","10","10","10","J","J","J","J","Q","Q","Q","Q","K","K","K","K"};
        List<String> list_convert = Arrays.asList(new_deck);
        Collections.shuffle(list_convert);
        return list_convert;
    }

}
组织的公共类功能{
公开无效指示(){
System.out.println(“欢迎来到战争!”);
System.out.println(“游戏的目的是收集对方的所有卡片。”);
System.out.println(“基本上,您所做的就是观察并按任意键进入下一轮。”);
System.out.println(“祝你好运!!!”;
}
公共列表获取_deck(){
新组串【】={“A”、“A”、“A”、“A”、“2”、“2”、“2”、“3”、“3”、“3”、“4”、“4”、“4”、“4”、“5”、“5”、“6”、“6”、“7”、“7”、“7”、“8”、“8”、“8”、“9”、“9”、“10”、“10”、“J”、“J”、“J”、“J”、“J”、“Q”、“Q”、“K”、“K”、“K”、“K”、“K”、“K”、“K”、“K”};
List\u convert=Arrays.asList(新的\u组);
集合。洗牌(列表\转换);
返回列表转换;
}
}
提前谢谢

您是否意识到:

int[] x = {1,2,3};

是完全不同的事情吗

当你这样做的时候

System.out.println(deck);
System.out.println(deck.length());
长度是指逗号、空格和[],为什么它们与随机化\u牌组中的52张牌相同

你根本不需要使用数组,在你的情况下,列表是非常好的

照办

List<String> randomized_deck = funtionsforwargame.get_deck();

System.out.println(randomized_deck);
List randomized_deck=FunctionsforOrganame.get_deck();
系统输出打印LN(随机甲板);
要进行拆分,可以使用
List#subList(..)

当您执行以下操作时:

String deck=java.util.Arrays.toString(deck_convert);
数字
52
变为
160
,因为卡10
2

您应该打印
字符串[]deck\u convert
,而不要使用
数组.toString(deck\u convert)

公共类战争游戏{
公共静态void main(字符串参数[]){
FunctionsForargame FunctionsForargame=新FunctionsForargame();
FunctionsForOrganame.instructions();
List randomized_deck=FunctionsForOrganame.get_deck();
String[]deck_convert=随机化_deck.toArray(新字符串[0]);
用于(字符串卡:卡片组转换)
系统输出打印(卡片+“,”);
系统输出打印长度(甲板转换长度);
}
}

这是真的,您可以在以下位置进行检查:

public class wargame {

    public static void main(String args[]) {
        funtionsforwargame funtionsforwargame = new funtionsforwargame();
        funtionsforwargame.instructions();
        List<String> randomized_deck = funtionsforwargame.get_deck();
        String[] deck_convert = randomized_deck.toArray(new String[0]);
        String deck = java.util.Arrays.toString(deck_convert);
        System.out.println(deck_convert.length);
        System.out.println(deck);
        System.out.println(deck.length());

    }

}
在第一种情况下,
length
提供数组元素的数量。在另一个示例中,您将获得已转换字符串的实际长度。 我们可以通过以下方式轻松检查:

public static void main(String args[]) {
    funtionsforwargame funtionsforwargame = new funtionsforwargame();
    funtionsforwargame.instructions();
    List<String> randomized_deck = funtionsforwargame.get_deck();
    String[] deck_convert = randomized_deck.toArray(new String[0]);
    String deck = java.util.Arrays.toString(deck_convert);
    System.out.println(deck_convert.length);
    System.out.println(deck);
    System.out.println(deck.charAt(4));  // here we take one symbol
    System.out.println(deck.length());

}

我们可以看到命令
System.out.println(deck.charAt(4))
给我们
**7**

我看不到你得到任何数组的
长度
属性,你只需调用数组的字符串表示形式
length()
,该数组还包含其他字符,例如逗号和空格,因此从52个1或2个字符的元素中可以得到一个160字符的字符串(类似
[A,A,2,10,…]
这是48个单字符+4个双字符+51次
+
[
+
]
=48+4*2+51*2+1+1=160个字符)请遵循Java命名约定(大小写、拼写)因为这将使您的代码可以阅读。例如,很难区分拼写错误的
FunctionsForArgame
类和拼写错误的
FunctionsForArgame
变量。我知道一个是数组,另一个是列表。我必须转换才能将它们洗牌。任何关于如何获得52的答案都会很有帮助。我仍然这样做我不知道如何不获取逗号、空格和[]。我需要能够稍后拆分随机化数据组,然后访问列表中的每个元素。这意味着长度必须正确。我仍然无法获得随机化数据组的长度,因为它是一个列表。好的,我会在程序的其余部分使用列表而不是数组。是的。列表几乎总是比数组好得多!!!…不客气!!!感谢您接受的答案!!!!因此,为了稍后访问每个元素,我必须从组中访问,但对于第一个元素,它将是第一个而不是第0个元素,因为[?是的,我只是改进了示例
public class wargame {

    public static void main(String args[]) {
        funtionsforwargame funtionsforwargame = new funtionsforwargame();
        funtionsforwargame.instructions();
        List<String> randomized_deck = funtionsforwargame.get_deck();
        String[] deck_convert = randomized_deck.toArray(new String[0]);
        String deck = java.util.Arrays.toString(deck_convert);
        System.out.println(deck_convert.length);
        System.out.println(deck);
        System.out.println(deck.length());

    }

}
52
[10, 2, 8, 3, A, 7, 2, 6, 8, 6, 4, K, 3, 9, 10, 3, 5, J, Q, 7, 5, 8, K, J, J, 3, A, 7, 7, 9, 2, 6, K, 4, Q, 9, A, Q, 10, A, 9, 5, K, Q, 5, 6, 8, 10, J, 4, 4, 2]
160
public static void main(String args[]) {
    funtionsforwargame funtionsforwargame = new funtionsforwargame();
    funtionsforwargame.instructions();
    List<String> randomized_deck = funtionsforwargame.get_deck();
    String[] deck_convert = randomized_deck.toArray(new String[0]);
    String deck = java.util.Arrays.toString(deck_convert);
    System.out.println(deck_convert.length);
    System.out.println(deck);
    System.out.println(deck.charAt(4));  // here we take one symbol
    System.out.println(deck.length());

}
52
[A, 7, 2, A, 2, 2, 5, A, 3, 8, 6, Q, 10, 4, K, 4, J, 3, 5, 7, 8, Q, 7, 5, 10, K, 10, 4, 9, 6, Q, 8, K, 7, 6, 9, J, J, 10, K, 5, 2, 8, 6, J, Q, 3, 4, 9, A, 3, 9]
7
160