我有这部分代码:
int numberStars =0;
int counter =0;
while (file.hasNext()) {
String contents = file.next();
{
if (contents.contains("*")) {
numberStars = counter;
continue;
}
counter++;
}
}
所以,如果我有一个包含
之类的文本文件ha de fa * la we * ba *
输出为3,5,6。如何更改此循环以便不计算最后一个*(因此6将不存在),以及我如何确保每次将值分配给numberStars时,该值将在另一个部分中使用方法?
非常感谢。
答案 0 :(得分:0)
如果我理解你想要的东西,那么保存最后一个计数器,最后只使用它。
int lastcounter = -1;
boolean starfound = false;
while (file.hasNext()) {
String contents = file.next();
{
if (contents.contains("*")) {
lastcounter = numberstars;
numberStars = counter;
starfound = true;
} else {
counter++;
}
if(starfound) {
// do something
starfound = false;
}
}
}
return lastcounter;
答案 1 :(得分:0)
您可能希望存储counter
的值列表,而不是仅存储一个int
。像
List<Integer> numberStars = new ArrayList<Integer>();
int counter = 0;
while (file.hasNext()) {
String contents = file.next();
if (contents.contains("*")) {
numbStars.add(counter);
continue;
}
counter++;
}
numberStars.remove(numberStars.size() - 1); // remove last value
// all the values are now available in the numberStars list
答案 2 :(得分:0)
只包含一行文件? 我建议用BufferedReader读取文件然后 使用String.split()方法查找星号数。
BufferedReader br = new BufferedReader(new FileReader("yourFile"));
String line;
String[] tmp;
int counter;
while( (line=br.readLine() ) !=null)
{
tmp = line.split(" ");
//Ignoring the last element
for(int i = 0; i < (tmp.length-1); i++)
{
if(tmp[i].contains("*"))
counter++;
}
}