我收到错误说“表达式的类型必须是数组类型,但它已解析为String”
public class StringWord {
public static void main(String[] args) {
String s = new String("Ahmedabad");
int count = 0;
System.out.println(s.length());
for(int i = 0; i < s.length(); i++){
if(s[i].equals("A")||s[i].equals("a")||s[i].equals("e")||
s[i].equals("E")||s[i].equals("i")||s[i].equals("I")||
s[i].equals("o")||s[i].equals("O")||s[i].equals("u")||
s[i].equals("U"))
{
count++;
}
}
System.out.println("Vowels in a string: "+count);
}
}
答案 0 :(得分:3)
if(s[i].equals("A")||s[i].equals("a")||s[i].equals("e")||s[i].equals("E")||s[i].equals("i")
||s[i].equals("I")||s[i].equals("o")||s[i].equals("O")||s[i].equals("u")||s[i].equals("U"))
equals
方法compares
两个strings
。在这里你要比较角色。
使用s.charAt(i)
代替s[i]
,因为您想要compare
两个characters
。要使用character
index i
方法获取charAt(index)
,可以使用此方法。两个比较使用两个字符== operator
。
if(s.charAt(i)=='A'||s.charAt(i)=='E'||s.charAt(i)=='I'||s.charAt(i)=='O'||s.charAt(i)=='U')||s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u')
答案 1 :(得分:2)
Strings
无法访问 someString[index]
(此表示法用于数组)。
请改用charAt(index)
,但请注意charAt()
会返回char
,因此您必须将其与==
进行比较,而不是与equals()
进行比较String
秒。
您还可以通过以下方式简化:
if ("AaEeIiOoUu".contains(Character.toString(s.charAt(i))) )
{...}
答案 2 :(得分:2)
您的变量s
是String
,但您通过array
将其视为s[i]
。
你应该使用
s.charAt(i) // a method of String class which returns the char at the index i
而不是s[i]
。
答案 3 :(得分:0)
Java String
对象不是字符数组,您不能使用它们的数组语法。相反,您需要使用charAt
,它会返回char
,而非String
,就像您显然期望的那样,并且您需要使用==
来比较基元:
if(s.charAt(i) == 'a' || ...)
此外,您可以使用indexOf
方法大幅简化if
声明:
static final String VOWELS = "aeiouAEIOU";
for(int i = 0; i < s.length(); i++)
if(VOWELS.indexOf(s.charAt(i)) > -1
count++;
答案 4 :(得分:0)
是。您在此处使用String s
。那里没有index
。使用char
中的s
数组。或者您可以使用s.charAt(index)
答案 5 :(得分:-1)
<强>正确。请不要
您需要将字符串转换为数组。
s.ToCharArray();
注意:这是c#代码,我不知道它是否与java类似。