美好的一天,
我正在尝试使用扫描仪读取txt文件,并将字符保存到2D字符串数组中。 txt文件由8行字符组成,不能用空格分隔。如果字符之间用空格隔开,则我的程序有效(如果您删除了分隔符),或者如果所有字符都在一行中,则我的程序可以有效(如果包括定界符)而没有空格。
如果有人可以告诉我如何正确保存字符,将不胜感激。问题出在带有双for循环的Read()函数中。我尝试添加另一个定界符(s.useDelimiter(s.nextLine())),但我不知道如何实现。
请记住,这是我第一次使用扫描仪扫描文件,而我只是在学习编程,因此我的代码不会很先进。
亲切的问候, 马修
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class BoardFile {
String[][] board = new String[8][8];
Scanner s;
// Print the board
public void Printboard() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
public void Open() {
try {
s = new Scanner(new File("**TXT FILE PATHNAME HERE**"));
} catch (FileNotFoundException e) {
System.out.println("Error");
}
}
public void Read() {
s.useDelimiter("");
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
String a = s.next();
board[i][j] = a;
}
}
}
public static void main(String[] args) {
BoardFile a = new BoardFile();
a.Open();
a.Read();
a.Printboard();
}
}
txt文件: https://www.dropbox.com/s/k8fkneg2dcw0cbe/abcde.txt?dl=0
答案 0 :(得分:0)
使用扫描仪的nextline()和split()函数将结果读取到二维数组中
public void Read() {
for (int i = 0; i < 8; i++) {
board[i]= s.nextLine().split("");
}
}
答案 1 :(得分:0)
对于二维数组,应使用char [] []而不是String [] [] 这是有效的程序。
package com.jvit.vm;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class BoardFile {
char[][] board = new char[8][8];
Scanner s;
// Print the board
public void Printboard() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
public void Open() {
try {
s = new Scanner(new File("test.txt"));
} catch (FileNotFoundException e) {
System.out.println("Error");
}
}
public void Read() {
s.useDelimiter("\n");
for (int i = 0; i < 8; i++) {
char[] chars = s.next().toCharArray();
for (int j = 0; j < 8; j++) {
board[i][j] = chars[j];
}
}
}
public static void main(String[] args) {
BoardFile a = new BoardFile();
a.Open();
a.Read();
a.Printboard();
}
}
答案 2 :(得分:0)
connection.setRequestProperty("Cookie","");
答案 3 :(得分:0)
您可以使用扫描仪跳过方法(如下所示),模式“ \ n *”表示输入中的一个或多个换行符
public void Read() {
s.useDelimiter("");
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
s.skip("\n*");
String a = s.next();
board[i][j] = a;
}
}
}