代码之家  ›  专栏  ›  技术社区  ›  Cruskits

是否可以验证扫描仪,以检查其是否具有相同特定值的最小值(x)?[已关闭]

  •  0
  • Cruskits  · 技术社区  · 6 年前

    我要做的是验证扫描器,这样如果输入字符串没有至少两个元音,它就会返回一个错误,但是我不知道该怎么做,似乎无法在其他地方找到答案。

    Scanner sc = new Scanner(System.in);
        System.out.print("Input alphabetical character string: ");
        while (!sc.hasNext("[aeiouAEIOU]+")) {
            System.out.println("Error, sequence requires a minimum of two vowels");
            sc.next();
        }
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   jasonStengel    6 年前

    每次他们输入这样的值时,您都可以使用validate方法。不过,这只会检查每个元音一次。

      public static void main(String[] args) {
        // TODO Auto-generated method stub
        String sInput = "";
        Scanner sc = new Scanner(System.in);
        System.out.print("Input alphabetical character string: ");
        sInput = sc.next();
        if (!hasTwoVowels(sInput)) {
            System.out.println("Error, sequence requires a minimum of two vowels");
            sc.next();
        }
        sc.close();
      }
      public static boolean hasTwoVowels(String sInput){
        int iCount = 0;
        String vowel[] = new String[]{"a","e","i","o","u","A","E","I","O","U"};
                for(int i =0; i < 10;i++) {
                    if(sInput.contains(vowel[i])) {
                        iCount++;
                        if(iCount == 2) {
                            return true;
                        }
                    }
                }
                return false;
         }
      }
    

    你也可以把字符串分开,数一数每个字母,然后把元音加起来 你可以通过做这样的事情很容易做到这一点。

    arr[(int)“e”-(int)“a”]++将递增arr[4]计数1 e

    您还可以使用bufferedReader来计算元音

        2
  •  0
  •   Stephen C    6 年前

    如果使用 Scanner 使问题更加困难。

    简单的解决方案是使用 BufferedReader 并数一数元音字符。

    能够 通过配置 扫描仪 返回由单个字符组成的“标记”,然后计算与元音匹配的标记。但这是毫无意义的。。。IMO。