gpt4 book ai didi

java - 如何省略将 '\n'(换行符)添加到从文件读取的字符数组中

转载 作者:行者123 更新时间:2023-12-02 05:55:09 26 4
gpt4 key购买 nike

如果之前有人问过这个问题,我深表歉意。我搜索了一下,似乎没有找到解决办法...

我正在将 .txt 文件中的字符添加到 char[] 中。

我想将所有字符添加到数组中,除了换行符('\n'?)。

这就是我正在尝试的,但不起作用。

import java.io.DataInputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;

public class StateReader extends FilterInputStream
{
private static final int FIELD_SIZE = 25 * 25;
static int readCount = 0;
private DataInputStream ds;

public StateReader(InputStream in)
{
super(in);
ds = new DataInputStream(in);
}

public char[] readState() throws IOException
{
char current;
char[] stateChar = new char[FIELD_SIZE];
int index = 0;

while (index < stateChar.length)
{
current = (char) ds.read();

if(current == '\n')
{
current = (char) ds.read(); // Attempting to read char after
stateChar[index++] = current; // '\n' encountered, and store that.
} else {
stateChar[index++] = current; // Stores whatever is read.
}
}

for (int i = 0; i < stateChar.length; i++)
{
System.out.printf("" + stateChar[i]); // Prints out contents of Array
// For troubleshooting...
}

return stateChar;
}
}
}

我确信有一种(更好的)方法可以做到这一点。

如前所述,我试图将文本文件的内容复制到 char[],不包括换行符。

然后我根据该数组的内容进行切换并相应地填充内容。问题是当开关遇到换行符时它不知道该怎么做。我尝试为 '\n' 添加一个案例,它递归地调用相同的函数......不用说,它不起作用。(这个“\n”案例是在 readState() 方法中没有使用“if”语句的情况下尝试的)。

public State findState(int p, Cell c)
{
State myState = null;
switch (charStateList[p])
{
case 'x': System.out.println("Read 'x':"+readCount);
readCount++;
myState = new Wall(c);
break;
case 'o': System.out.println("Read 'o':"+readCount);
readCount++;
myState = new Empty(c);
break;
case '\n': findState(p, c);
break;
default: System.out.println("Default:" + readCount);
readCount++;
myState = new Empty(c);
break;
}

return myState;
}

我尝试了 .equals(),但对字符不起作用。

感谢您的帮助,非常感谢。如果这个问题已经得到解答,我再次表示歉意。

编辑:有没有办法可以简单地为 FileInputStream/DataInputStream 设置分隔符,以便忽略它?

最佳答案

我不知道您的文件的结构如何。但这里有一段代码,可以更轻松地将字符从 .txt 文件添加到 char[]:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class TxtToChar {

/**
* @param args
*/
public static void main(String[] args) {
String string = "";
char[] c;
try {
Scanner scanner = new Scanner(new File("test.txt"));
while (scanner.hasNext()){
string += scanner.useDelimiter("\n").nextLine();

}
c = string.toCharArray();
for(int i =0;i<c.length;i++){
if(c[i] !=' '){
System.out.println(c[i]);
}
}
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}

关于java - 如何省略将 '\n'(换行符)添加到从文件读取的字符数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174057/

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