我正在用Java编写填字游戏程序而且我被卡住了。
每当我尝试执行像java assign2 > input.txt
这样的代码时,没有任何反应,它就像一个无限循环。
当我的填字游戏计划不完整时,只是如果我无法测试它我就无法做其他事情,如果你能提供帮助,这是我的代码。
import java.util.*;
public class A2
{
public static void main(String[] args)
{
String[] a = new String[100];
Scanner scanner = new Scanner(System.in);
String t = scanner.nextLine();
Crossword cw = new Crossword(t);
int count = 0;
System.out.print("1");
for (; !t.equals(""); count++)
{
System.out.print("2");
a[count] = t;
t = scanner.nextLine();
}
for (int j = 0; j < 20; j++)
{
for (int k = 0; k < 20; k++)
System.out.print(cw.crossword[j][k]);
System.out.println("");
}
}
}
/**
The class Crossword knows how to build a crossword layout from
a list of words.
*/
class Crossword
{
public char[][] crossword = new char[20][20];
public Crossword(String first)
{
for (int i = 0; i < first.length(); i++)
crossword[9][i] = first.charAt(i);
}
}
我现在就要放弃了,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
您似乎正在写入您正在阅读的同一文件。您从"input.txt"
开始阅读,并使用java assign2 > input.txt
(或java A2...
)致电您的计划。
这意味着,当您写入System.out
并重定向到input.txt
时,该文件会有更多行读取,而您的条件!t.equals("")
永远不会变为错误。
答案 1 :(得分:1)
我已经给了它一个旋转它似乎工作 - 但是,检查文件重定向的方向;我想你是在追求:
java assign2 < input.txt
目前还不完全清楚你在输出方面想要达到的目标,但我怀疑你需要更接近以下内容:
public class Main {
private static Crossword[] crosswords = new Crossword[20];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
int index = 0;
while (!line.equals("") && index < 20) {
crosswords[index++] = new Crossword(line);
line = scanner.nextLine();
}
for (int i=0; i < 20; i++) {
for (int j=0; j < 20; j++) {
if (crosswords[i] != null) {
System.out.print(crosswords[i].crossword[j]);
} else {
System.out.print("");
}
}
System.out.println("");
}
}
}
希望有所帮助。