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中的梯形文字游戏_Java_Arrays_Multidimensional Array_Incompatibility - Fatal编程技术网

Java中的梯形文字游戏

Java中的梯形文字游戏,java,arrays,multidimensional-array,incompatibility,Java,Arrays,Multidimensional Array,Incompatibility,我发现了这个问题,我也想做这样的节目。我已经写了一些代码,但是已经有两个问题了。以下是我已经拥有的: 网格: public class Grid { public Grid(){} public Grid( Element e ){} } 要素: public class Element { final int INVISIBLE = 0; final int EMPTY = 1; final int FIRST_LETTER = 2;

我发现了这个问题,我也想做这样的节目。我已经写了一些代码,但是已经有两个问题了。以下是我已经拥有的:

网格:

public class Grid {    
    public Grid(){}
    public Grid( Element e ){}
}
要素:

public class Element {  
    final int INVISIBLE = 0;
    final int EMPTY = 1;
    final int FIRST_LETTER = 2;
    final int OTHER_LETTER = 3;   
    private int state;
    private String letter;

    public Element(){}  
//empty block    
    public Element(int state){
        this("", 0);
    }  
//filled block
    public Element(String s, int state){
        this.state = state;
        this.letter = s;
    }

    public static void changeState(int s){
    }

    public int getState(){
        return state;
    }

    public boolean equalLength(){
        return true;
    }

    public boolean equalValue(){
        return true;
    }

    @Override
    public String toString(){
        return "["+letter+"]";
    }
}
主要内容:

//

//

和用于调试的示例输出:

Height: 
3
Length 1, please!
A
s.length: 1
temp.length: 2
str:
str:A
single1: []
single2: [A]
line:[]
line:[A]
我认为应该是这样的。我从用户那里得到一句话。接下来为整个游戏创建网格元素。然后为每一行创建名为line的元素[]数组。我将给定的文本拆分,这里是第一个问题。为什么string.split()会添加空白?您可以在输出中清楚地看到它是无缘无故添加的。我如何摆脱它(现在我不得不在行的长度上加上+1来运行代码)。继续,我将拆分的文本放入临时字符串数组,然后从每个字母创建元素对象并将其放入行数组。除此之外,空空间输出看起来不错。但下一个问题是网格。我已经创建了以元素作为参数的构造函数,但由于“类型不兼容”,我仍然无法将line作为Grid[]元素抛出。我怎样才能解决这个问题?我做得对吗?也许我应该去掉作为元素[]的线,只创建网格[]

为什么要添加空格

您必须指定一个非空正则表达式来:


1-您可能希望使用String.charAt()而不是split()


2-您得到的是“不兼容类型”,因为您已将“游戏”声明为“网格”对象的数组,但您试图分配给它的“线”对象不是类型“元素数组”。您最好使用二维数组来存储元素。

好吧,但现在它将我的字符串拆分为“ABC”而不是“a”、“B”、“C”。@sasquatch90:See@psmears-answer。
            temp = s.split("");
            System.out.println("s.length: "+s.length());
            System.out.println("temp.length: "+temp.length);
            for(String str : temp){
                System.out.println("str:"+str);
            }

            for (int k = 0 ; k < temp.length ; k++) {
                if( k == 0 ){
                    single = new Element(temp[k], 2);
                    System.out.println("single1: "+single);
                }
                else{
                    single = new Element(temp[k], 3);
                    System.out.println("single2: "+single);
                }
                line[k] = single;
            }

            for (Element l : line) {
                System.out.println("line:"+l);
            }
            game[i] = line;
        }
        for (Grid g : game) {
            System.out.println(g);
        }
    }
}
Height: 
3
Length 1, please!
A
s.length: 1
temp.length: 2
str:
str:A
single1: []
single2: [A]
line:[]
line:[A]
for (String t : s.split(" ")) {
    System.out.println(t);
}