繁体   English   中英

我需要创建一个程序,允许用户输入任何字符串。 程序必须确定字符串中有多少个元音和单词

[英]I need to create a program that allows a user to input any string. The program must determine how many vowels and words are within the string

我目前停留在代码的第一个循环上。 我在比较字符串中与第一个元音a的索引处的字符时遇到了困难(一直在说char不能被取消引用...)。

我只想知道如何正确地比较字符串中的任何字母和任何元音(a, e, i, o, u) 我还想知道是否可以将字符串中的某个字母与整个数组进行比较,还是只需要与每个元音进行比较?

import java.util.*;

class StringCount {

   public static void main(String [] args) {

      Scanner input = new Scanner(System.in);
      String user;
      int charCount;
      char[] vowel = {'a', 'e', 'i', 'o', 'u'};
      System.out.println("Please enter any string!");
      user = input.nextLine();
      charCount = user.length();

      for (int i = 0; i < charCount; i++) {
         if(user.charAt(i).equals('a') {

         }
      }

   }

}

您在这里缺少两件事: 字符可以大写或小写。 b。 单词分隔符,它们可以是逗号,空格等。

 import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    public class WaitTest {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
              String user;
              int charCount;
              List<Character> vowels = new ArrayList();
              //add all vowels to list inclusing uppercase 
 a,e,i,o,u,A,E,I,O,U
              vowels.add('a');
              vowels.add('e');

              List<Character> wordSeperators = new ArrayList();
              //add your word seperators here
              wordSeperators.add(' ');
              wordSeperators.add(',');

              System.out.println("Please enter any string!");
              user = input.nextLine();
              charCount = user.length();
               int vowelCount=0,wordCount=0;
              for (int i = 0; i < charCount; i++) {
                 char c= user.charAt(i);
                 if(vowels.contains(c)) {
                     vowelCount++;
                 }else if (wordSeperators.contains(c)){
                     wordCount++;
                 }
              }
            }
    }

如果您只想检查用户在列表中输入的字符是否为char,则可以将Java.lang.String.contains()方法与循环中的char列表一起使用

如果您想检查您输入的用户是否完全是列表中的一个字符,则可以在循环中使用Java.lang.String.equal()方法

您将需要修改代码以将每个输入字符与元音数组进行比较。

for (int i = 0; i < charCount; i++) {
  for (char v : vowel) {
    if(user.charAt(i) == v {

      //here is what you do if a vowel <v> is found

    }
  }
}

希望这可以帮助。

另一个可能的解决方案:

    if (Arrays.binarySearch(vowel, user.charAt(i)) >= 0)  {

    }

更新:

equals()用于对象(字符串,整数等)

对于int,boolean,char等原语,您必须使用==尝试一下。

 public static void main(String[] args) {

 int count =0;
    String user;

    Scanner input = new Scanner(System.in);

    System.out.println("Please enter any string!");
    user = input.nextLine();
    System.out.println(user);
    int inputLength = user.length();

      try{
          for (int i = 0; i < inputLength; i++) {

              char letter = user.charAt(i);

     if(letter=='a'||letter=='e'||letter=='i'||letter=='o'||letter=='u') {

                  count +=1;  
             }

          }

      }catch (Exception e) {
        // TODO: handle exception
    }
      System.out.println("FINAL COUNT "+count);

}

我的老师对我们的完成方式不太严格,因为我们是编程的新手。 我篡改了代码,找到了解决方案。 我知道这可能不是最好的解决方案,但是在大多数情况下,只要在字符串中使用正确的标点符号,字数和元音数都会按需增加。 我收到的大多数答案对我来说有点先进。 我们没有涉及很多这些概念,但是非常感谢你们。 有人指出,我使用“ .equals”来比较单个字符,而不是使用“ ==”。 这个解决方案对我最大的帮助!

如果任何人都可以添加到我的解决方案中,以允许将任何用户输入转换为正确的字数和元音计数,那么谢谢!!

例如 1(指出正确的字数和元音计数):字符串:“让我们去那里!” 元音:7个字:5

例如 2(指出不正确的字数和元音计数):这些是不使用标点符号时的值字符串:“让我们去那里”元音:7个字:4

import java.util.*;

class StringCount {

public static void main(String [] args) {

  Scanner input = new Scanner(System.in);
  String user;
  int s, charCount, wordCount, vowelCount;
  char[] vowel = {'a', 'e', 'i', 'o', 'u',};
  char[] punct = {' ', '.', ';','?', '!', '-'};
  s = 0;
  wordCount = 0;
  vowelCount = 0;

  System.out.println("Please enter any string!");
  user = input.nextLine();
  user = user.toLowerCase();
  charCount = user.length();
  for (int i = 0; i < charCount; i++) {
     if(user.charAt(i) == vowel[0] ||
        user.charAt(i) == vowel[1] ||
        user.charAt(i) == vowel[2] ||
        user.charAt(i) == vowel[3] ||
        user.charAt(i) == vowel[4])
        vowelCount++;

     if(user.charAt(i) == punct[0] ||
        user.charAt(i) == punct[1] ||
        user.charAt(i) == punct[2] ||
        user.charAt(i) == punct[3] ||
        user.charAt(i) == punct[4] ||
        user.charAt(i) == punct[5])
        wordCount++;
  }
  System.out.println("Vowels: " + vowelCount);
  System.out.println("Words: " + wordCount);

  }

  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM