-1

我正在尝试创建一个从扫描仪中查找指定字母的 Java 程序。我可以使用 findWithinHorizo​​n 来执行此操作吗?如果可以,如何操作?

4

2 回答 2

2

尝试这个

    Scanner sc = new Scanner("xxyyxxy");
    for (int n = 0;; n++) {
        String s = sc.findWithinHorizon("y", 0);
        if (s == null) {
            System.out.println(n);
            break;
        }
    }

输出

3

于 2013-04-29T12:10:37.053 回答
1

如果扫描仪是指java.util.Scanner

    public int fromScanner(Scanner scanner, String letter){
    scanner.useDelimiter(letter);
    int howMany = 0;
    while(scanner.hasNext()){
        scanner.next();
        ++howMany;
    }
    if(howMany>0)++howMany;
    return howMany;
}

有很多更好的方法来计算一个字母。你在做什么的任何暗示?

这里的编辑实际上是使用 findWithinHorizo​​n

 public int fromScanner2(Scanner scanner, String letter){ 
      int result = 0;
      String resultS = null;
      while( (resultS = scanner.findWithinHorizon(letter, 0)) !=null ){
           ++result;
      }
      return result;
 }

现在这种方法有点不直观(至少对我来说)。当您使用它并实际找到某些事件时,Scanner 内部有一个整数,用于跟踪上次找到的位置。并且在下一次搜索中,它将使用这个位置从它开始搜索

于 2013-04-29T11:59:50.693 回答