[英]I need help in making a java chatbot program but I cannot get the program to compare the user input to the stored string
[英]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.