Java 忽略文件中最后指定的字符

Java 忽略文件中最后指定的字符,java,Java,我有这段代码: int numberStars =0; int counter =0; while (file.hasNext()) { String contents = file.next(); { if (contents.contains("*")) { numberStars = counter; continue; } counter++;

我有这段代码:

int numberStars =0;
int counter =0;

while (file.hasNext()) {
  String contents = file.next();
  {             
    if (contents.contains("*")) {
      numberStars = counter;                    
      continue;
    }
    counter++;              
  }
}
如果我有一个文本文件,其中包含

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
哈德法*拉我们*巴*

输出将为3,5,6。如何更改此循环,使最后一个*不被计数(因此6将不存在),以及如何确保每次将值分配给numberStars时,该值将用于方法的另一部分


非常感谢。

如果我了解您想要什么,请保存最后一个计数器,最后只使用它

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;

如果我明白你想要什么,那么保存最后一个计数器,最后只使用它

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;

看起来您可能想存储
计数器的值列表,而不是只存储一个
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
List numberStars=new ArrayList();
int计数器=0;
while(file.hasNext()){
字符串内容=file.next();
if(contents.contains(“*”){
添加(计数器);
持续
}
计数器++;
}
numberStars.remove(numberStars.size()-1);//删除最后一个值
//所有值现在都可以在numberStars列表中找到

看起来您可能希望存储
计数器的值列表,而不是只存储一个
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
List numberStars=new ArrayList();
int计数器=0;
while(file.hasNext()){
字符串内容=file.next();
if(contents.contains(“*”){
添加(计数器);
持续
}
计数器++;
}
numberStars.remove(numberStars.size()-1);//删除最后一个值
//所有值现在都可以在numberStars列表中找到

是否只包含一行文件? 我建议使用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++;
    }


}
BufferedReader br=newbufferedreader(newfilereader(“yourFile”);
弦线;
字符串[]tmp;
整数计数器;
而((line=br.readLine())!=null)
{
tmp=行分割(“”);
//忽略最后一个元素
对于(int i=0;i<(tmp.length-1);i++)
{
if(tmp[i]。包含(“*”)
计数器++;
}
}

是否只包含一行文件? 我建议使用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++;
    }


}
BufferedReader br=newbufferedreader(newfilereader(“yourFile”);
弦线;
字符串[]tmp;
整数计数器;
而((line=br.readLine())!=null)
{
tmp=行分割(“”);
//忽略最后一个元素
对于(int i=0;i<(tmp.length-1);i++)
{
if(tmp[i]。包含(“*”)
计数器++;
}
}