如果之前已经提出这个问题,我道歉。我搜索了它,似乎无法找到解决方案......
我正在从.txt文件中将char添加到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 [],不包括换行符。
然后我根据这个数组的内容进行切换并相应地填充内容。问题是当交换机遇到新行字符时,它不知道该怎么做。我尝试为&#39; \ n&#39;添加一个案例。递归地调用相同的函数...不用说,它没有工作。 (在没有readState()方法中的&#39; if&#39;语句的情况下尝试了这个&#39; \ n&#39;。
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(),但却没有为char工作。
感谢您的帮助,我们非常感谢。如果已经回答,我再次道歉。
编辑:有没有办法可以简单地为FileInputStream / DataInputStream设置分隔符,以便忽略它?
答案 0 :(得分:2)
我不知道您的文件是如何构建的。但是这里有一个代码,可以更容易地从.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();
}
}
}
答案 1 :(得分:0)
使用scanner。默认分隔符是空格。