这就是我所拥有的:
public void readFile(String fileToOpen) {
File myFile = new File(fileToOpen);
try {
Scanner inFile = new Scanner(myFile);
while (inFile.hasNext()) {
String input = inFile.nextLine();
String [] readString = input.split(",");
for (int i = 0; i < readString.length; i++) {
readString[i].trim();
}
System.out.println(readString[0] + readString[1] + readString[2] + readString[3] + readString[4] + readString[5]);
Point myPoint = new Point(Integer.parseInt(readString[1]), Integer.parseInt(readString[2]));
if (readString[0].toLowerCase().equals("man")) {
Man myMan = new Man(myPoint, Integer.parseInt(readString[3]), Integer.parseInt(readString[4]), readString[5]);
this.myList.add(myMan);
} else if (readString[0].toLowerCase().equals("woman")) {
Woman myWoman = new Woman(myPoint, Integer.parseInt(readString[3]), Integer.parseInt(readString[4]), readString[5]);
this.myList.add(myWoman);
} else {
inFile.close();
throw new IllegalArgumentException();
}
}
inFile.close();
}
Run Code Online (Sandbox Code Playgroud)
我知道它并不完美,我只是在学习.但是,trim()应该在这里工作......
我的输入文件是:
man, 300, 200, 3, 2, Bill
Run Code Online (Sandbox Code Playgroud)
如果我要将修剪后的字符串添加到一起,我应该得到:
man30020032Bill
Run Code Online (Sandbox Code Playgroud)
但我得到:
man 300 200 3 2 Bill
Run Code Online (Sandbox Code Playgroud)
我不知道为什么.有人可以帮忙吗?
字符串是不可变的.这个:
myString.trim();
Run Code Online (Sandbox Code Playgroud)
创建并返回一个新修剪的String,但对myString引用的原始String不执行任何操作.由于新的String永远不会分配给变量,因此它会挂起并最终被垃圾回收.要获取和使用修剪的String,必须将结果分配给变量,例如原始变量(如果需要):
myString = myString.trim();
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下:
readString[i] = readString[i].trim();
Run Code Online (Sandbox Code Playgroud)
更改
for (int i = 0; i < readString.length; i++) {
readString[i].trim();
}
Run Code Online (Sandbox Code Playgroud)
至
for (int i = 0; i < readString.length; i++) {
readString[i] = readString[i].trim();
}
Run Code Online (Sandbox Code Playgroud)
因为String对象是不可变的,因此该trim()方法返回一个必须分配给该数组的新实例.
字符串是不可变的,因此这不会改变以下内容String:
readString[i].trim();
Run Code Online (Sandbox Code Playgroud)
它返回更改的值.尝试
readString[i] = readString[i].trim();
Run Code Online (Sandbox Code Playgroud)