Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为面向对象编程的int数组编写toString()方法?_Java_Arrays_Oop_Tostring - Fatal编程技术网

Java 如何为面向对象编程的int数组编写toString()方法?

Java 如何为面向对象编程的int数组编写toString()方法?,java,arrays,oop,tostring,Java,Arrays,Oop,Tostring,如何为int数组编写toString()方法?是否返回52个卡片组的字符串表示形式 以下是作为类的一部分的示例数组: { int[] cards = new int[52]; public void Deck() { // Setting up array String[] suits = {"SPADES", "CLUBS", "HEARTS", "DIAMONDS"}; String[] ranks = {"TWO",

如何为int数组编写toString()方法?是否返回52个卡片组的字符串表示形式

以下是作为类的一部分的示例数组:

{
    int[] cards = new int[52];

    public void Deck()
    {
        // Setting up array
        String[] suits = {"SPADES", "CLUBS", "HEARTS", "DIAMONDS"};
        String[] ranks = {"TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", 
            "EIGHT", "NINE", "TEN", "JACK", "QUEEN", "KING", "ACE"};
        {
            // Initalising array
            for (int i = 0; i < cards.length; i++)
            {
                cards[i] = i;
            }
        }
    }
我还使用了类似的toString()方法,编写如下:

return getClass().getName() + "[suits[]= " + suits[] + "ranks[]= " + ranks[] + "]";
这与我在其他值中使用的toString()方法相同,并且它正常工作。虽然现在我得到了这两个(或至少第一个)的错误:


至于打印它,我希望它被格式化为列表或网格。

如果你想做得更糟糕,你应该创建一个新的类

Card
类必须包含
suit
rank
字段(类型可以是此处的一个)。
确保
Card
覆盖
toString()
,并确保
Deck
中的数组是
Card[]
(而不是
int[]

现在,您可以通过调用轻松实现
toString()
,这将依次调用每个
Card
对象的
toString()


至于您的代码(稍后添加):

不会编译,因为
cards[]
不是值-
cards
是值,但它不会得到您想要的。数组的
toString()
不会生成
数组的内容,您应该使用Array.toString(cards)


但是,我建议重新设计答案开头所述的代码。

我将使用
enum
作为西装和面值,而不是使用字符串。卡片将是一种组合,这将使打印更容易。顺便说一句,如果您使用此模式,您的IDE可以为您生成一个
toString()
。@SeanOwen请参见顶部的编辑,我只需要列表或网格形式的标准字符串表示形式。@PeterLawrey我已经在同一个包中的一个单独类中使用了suit和rank作为枚举,但它们已被标记为整数,不是字符串。每个
enum
都有一个
name()
方法,它是名称的字符串表示形式。你是如何在没有字符串的情况下使用
enum
的?@PeterLawrey嗯,我在
enum
方法本身中没有
name()
方法。它们所拥有的只是
int值
,以及在
getValue()
中返回它们的方法。我确实使用了像钻石(1)
这样的东西,但这就是它的作用。你想让我建立一个枚举吗?我真的没有时间重新设计整个代码,但我已经插入了
数组。toString(cards)
,我不再有任何错误。我可能会在toString()方法中插入一种将数组打印出来的方法来完成它。
return getClass().getName() + "[suits[]= " + suits[] + "ranks[]= " + ranks[] + "]";
cannot find symbol
symbol: Class cards //which I dont have other than the array at the top
location: Class Pack // The class the array is currently in

unexpected type
required: value
found: class

'.class.' expected
return getClass().getName() + "[cards[]= " + cards[] + "]";