我目前的目标是采用类似
的字符串 "######
# #
# @ ##"
@是我的“字符”,“#”是我应该避免的墙,我希望我的角色开箱即用,返回路径,我意识到我的例子很糟糕,但我希望你能理解。我目前的想法是读取带有该字符串的文本文件,然后创建一个二维网格数组,然后从那里开始工作,我目前的代码是:
package soko;
import java.io.*;
import java.util.*;
public class Sokoban2 {
static File file;
Scanner input;
static int b;
static int c;
static String[][] array;
public Sokoban2() {
//array = new String [9][9];
}
public int readFile() throws Exception{
Scanner input = new Scanner(System.in);
file = new File("C:/Users/joaki/Desktop/sokoban/readin.txt");
input = new Scanner(file);
while (input.hasNext()) {
b = b + 1;
String line = input.nextLine();
System.out.println(line);
}
input.close();
return b;
//array = new String[5][5];
}
public void insertStuff() {
//array[1][1]="2";
}
public void printStuff() {
for (int r = 0; r<2;r++){
String line2 = "";
for (int d = 0; d <2;d++){
line2+="["+array[d][r]+"]";
}
System.out.println(line2);
}
}
public static void main(String[] args) throws Exception{
Sokoban g = new Sokoban();
g.readFile();
//g.insertStuff();
//g.printStuff();
//g.creatingGrid(c,b);
//System.out.println(b);
}
}
我真的很想打印我的b,至少检查它的值,但是我的程序不会返回任何值,它甚至不返回null或0,我也尝试打印它,那里也没有运气, ?
答案 0 :(得分:1)
您没有将值返回到任何变量,我只是运行您的代码,它可以正常工作,它可以计算文件中的行数。
int b = g.readFile();
System.out.println(b);
如果您不将值返回给变量,则您将无法访问主变量中的 b 值,因为它超出了范围,请在此处进行更多说明: https://www.cs.umd.edu/~clin/MoreJava/Objects/local.html
编辑: 我实际上只是意识到您在类中将 b 声明为静态的,因此我决定像上面一样运行它,但仍然可以打印出行数。
g.readFile();
System.out.println(b);
如果您要让函数返回一个值,并且您不打算存储 b ,那么请删除类中的静态声明,然后在返回b的函数中声明它。