我正在尝试删除0.0作为打印文本文件的所有行。
这是它输出的内容,
4177516040935072 14.94
4270931484327447 7.54
4308546496189733 7.1
4421407386000242 0.0
4436391685645089 0.0
这就是我想要输出的内容
4177516040935072 14.94
4270931484327447 7.54
4308546496189733 7.1
这是我的代码:
Collection<Passenger> c = passengers.values();
Iterator<Passenger> itr = c.iterator();
try {
while (itr.hasNext()) {
//System.out.println(itr.next().getBillAmount());
BufferedWriter writer = new BufferedWriter(new FileWriter(fileOutput,true));
writer.append(itr.next().toString());
writer.newLine();
writer.close();
}
} catch (IOException e3) {
e3.printStackTrace();
}
}
答案 0 :(得分:1)
拆分值并检查是否有任何令牌包含0.0
。同时在循环外声明BufferedWriter
并在循环外部关闭它。另请使用write()
上的BufferedWriter
方法代替append()
。
BufferedWriter writer = new BufferedWriter(new FileWriter(fileOutput,true));
while (itr.hasNext()) {
List<String> values = Arrays.asList(itr.next().toString().split(" "));
if(!values.contains("0.0")){
writer.write(itr.next().toString());
writer.newLine();
}
}
writer.close();
答案 1 :(得分:1)
我更喜欢:
if (!String.Contains(" 0.0") {
System.Out.println(...);
}
因为我们使用endsWith();也许我们在字符串末尾有一个空格
答案 2 :(得分:0)
你可以试试这个:
while (itr.hasNext()) {
if (!itr.next().toString().contains(" 0.0"))
{
//System.out.println(itr.next().getBillAmount());
BufferedWriter writer = new BufferedWriter(new FileWriter(fileOutput,true));
writer.append(itr.next().toString());
writer.newLine();
writer.close();
}
}
答案 3 :(得分:0)
您可以使用String.endsWith()
方法
if (!String.endsWith(" 0.0") {
// do something
}
答案 4 :(得分:0)
其他答案可行,但最好能访问Passenger类的源代码。如果乘客类有两个字段都写入toString
中的字符串结果,那么最好访问要通过其getter检查其值的字段。
我还重新安排了你的代码,这样你就不会关闭并重新打开每行的BufferedWriter
示例:
BufferedWriter writer = new BufferedWriter(new FileWriter(fileOutput,true));
while (itr.hasNext()) {
Passenger p = itr.next();
if (p.getSomeField() != 0.0) {
writer.append(p.toString());
writer.newLine();
}
}
writer.close();
答案 5 :(得分:0)
int i = 0;
for(String line : lines)
{
for(String word : line.split(" "))
{
if(word).equals("0.0")
{
lines.remove(i);
}
}
i++;
}
您可以使用
if(line.contains("0.0"))
{
lines.remove(i);
}
如果它可以在该行的任何地方。或
if(line.endsWith("0.0"))
{
lines.remove(i);
}
如果它总是在行的末尾。