gpt4 book ai didi

java - Java中的类似梯子的文字游戏

转载 作者:行者123 更新时间:2023-12-02 08:32:49 28 4
gpt4 key购买 nike

我发现了这个问题Choosing design method for ladder-like word game我也想做这样的节目。我已经编写了一些代码,但已经有两个问题。这是我已经拥有的:

网格:

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+"]";
}
}

主要:

import java.util.Scanner;

public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);

System.out.println("Height: ");
while (!sc.hasNextInt()) {
System.out.println("int, please!");
sc.next();
}
final int height = sc.nextInt();
Grid[] game = new Grid[height];

for(int i = 1; i <= height; i++) {
String s;
do {
System.out.println("Length " + i + ", please!");
s = sc.next();
} while (s.length() != i);

Element[] line = new Element[s.length()+1];
Element single = null;
String[] temp = null;

//问题在这里

            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]

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

最佳答案

Why does string.split() add whitespace?

您必须为 string.split() 指定一个非空正则表达式:

for (String t : s.split(" ")) {
System.out.println(t);
}

关于java - Java中的类似梯子的文字游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845027/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com