所以我有一个看起来像这样的文件:
+-+-+-+ ("/n")
|S| | ("/n")
+ + + + ("/n")
| |E| ("/n")
+-+-+-+ ("/n")
/n
是文件中的新行
我希望这里的每个字符都是5x7数组中的一个条目。我不知道该怎么做,这就是我所尝试的(还有很多其他的东西。输入是文件):
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File("maze0.txt"));
char maze[][] = new char[5][7];
int charCount = 0;
for (int row = 0; row < finalHeight; row++) {
for (int col = 0; col < finalWidth; col++) {
while (input.hasNextLine()){
String line = input.nextLine();
if ((row < finalHeight - 1 || col < finalWidth) && charCount < line.length()) {
maze[row][col] = line.charAt(charCount);
charCount += 1;
System.out.print(maze[row][col]);
但这打印出+ S + +,这是不对的。我是一个全新的初学者程序员,并且很难有这个,感谢您提供的任何帮助。
我修好了!!这就是我所做的:
Scanner input = new Scanner(new File("maze0.txt"));
char maze[][] = new char[5][7];
input.nextLine();
for (int row = 0; row < 5; row++) {
String fileLine = input.nextLine();
for (int col = 0; col < 7; col++) {
char nextChar = fileLine.charAt(col);
maze[row][col] = nextChar;
System.out.print(maze[row][col]);
答案 0 :(得分:0)
使用.toCharArray()
将行转换为字符数组,这将为您提供所有字符的数组。然后将它们送入您的阵列。
它看起来像......
// everytime we come to a new row, read a line from the file, convert it into letters then proceed on feeding them into columns.
for (int row = 0; row < finalHeight; row++)
{
String line = input.nextLine();
Char[] chars = line.toCharArray();
if(!input.hasNextLine())
break; // if there is no more lines to read, break the loop.
for (int col = 0, i = 0; (col < finalWidth && i < chars.length); col++,i++)
{
maze[row][col] = chars[i];
System.out.print(maze[row][col]);
}
}
答案 1 :(得分:0)
实际上,虽然屏幕可能显示+ S + +,但您的数组中只有一个值 - 迷宫[0] [0](值为'+')。你的while循环在for循环增加之前读取整个文件。对于它读取的每一行,它设置maze[row][column] = line.charAt(charCount);
- 但row
和column
永远不会增加,因为,还有另一个行阅读。所以它读取另一行并覆盖maze[0][0]
为line.charAt(1)(因为你增加了charCount)。这个角色就是空间。然后它循环回来,因为还有另一行要读取,并将第3个字符放在maze[0][0]
。等等等等。当它读取整个文件时,它会逐步执行for循环,但while (input.hasNextLine())
不会执行,因为它已经读取了整个文件。
答案 2 :(得分:0)
你只需要两个循环,为什么你要运行3个循环?
Scanner sc = new Scanner(new File("maze.txt"));
String line = null;
for(int i = 0; i< 5;i++)
{
line = sc.readLine()
for(int j = 0; j < 7; j++)
{
maze[i][j] = line.charAt(j);
}
}
此代码段应读取文件并将其存储在矩阵中。
由于您正在读取内循环中的线,因此您正在打印对角线。
答案 3 :(得分:0)
这是一种简单而有效的方法。
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File("maze0.txt"));
char maze[][] = new char[5][7];
for (int i = 0; i < maze.length; i++) {
//Get each line and convert to character array.
maze[i] = input.nextLine().toCharArray();
}
}
答案 4 :(得分:0)
您可以从文件中读取每一行并将其转换为char数组。
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(new File("maze0.txt"));
String b;
char maze[][] = new char[5][7];
for (int row = 0; row < 5; row++) {
while ( scan.hasNextLine() ){
b = scan.nextLine();
maze[row] = b.toCharArray();
System.out.println(maze[row]);
}
}
scan.close();
}
答案 5 :(得分:0)
import java.io.*;
import java.util.*;
public class B
{
public static void main(String...aaadf)throws FileNotFoundException
{
Scanner sc = new Scanner(new File("D://maze.txt"));
char maze[][] = new char[5][7];
String line = null;
for(int i = 0; i< 5;i++)
{
line = sc.nextLine();
for(int j = 0; j < 7; j++)
{
maze[i][j] = line.charAt(j);
}
}
for(int i = 0; i< 5;i++)
{
for(int j = 0; j < 7; j++)
{
System.out.print(maze[i][j]);
}
System.out.println();
}
}
}