我在netbeans上学习Java,所以我找了一些练习。 我试图完成这个练习:写一个java程序,提示用户输入一个单词并检查这个单词是否以字母' A'开头。
所以我写了这段代码:
package testone;
import java.util.Scanner;
public class TestOne {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
String strA = "A";
Scanner s = new Scanner(System.in);
System.out.println("Please enter a word : ");
String userWord = s.next();
char firstLetter = userWord.charAt(0);
if (strA.equals(firstLetter)) {
System.out.println("Your word starts with letter A ");
}else {
System.out.println("Your word doesn't start with letter A ");
}
}
}
但它可能不起作用,任何想法?
答案 0 :(得分:4)
您正在将String
与char
进行比较:if (strA.equals(firstLetter)) {
。这就像检查苹果是否等于梨一样;它永远是假的。
相反,只需检查输入是否以A:
开头if (userWord.startsWith("A")) {
有关详细信息,请参阅Java - String - startsWith。
答案 1 :(得分:1)
根据the doc:
public boolean equals(Object anObject)
将此字符串与指定对象进行比较。如果,结果是真的 并且仅当参数不为null并且是String对象时 表示与此对象相同的字符序列。
您使用char
类型的参数调用此方法,该参数将被装箱到Character
实例中,该实例不会扩展String
。结果将始终为false
。
改为使用userWord.startsWith("A")
或userWord.charAt(0) == 'A'
...
答案 2 :(得分:0)
您可以尝试使用userWord.startsWith("A")
答案 3 :(得分:0)
你无法直接比较char和String。除了其他人给出的解决方案之外,您可以使用String.valueOf(...)
函数,然后您就可以比较String和char。
package testone;
import java.util.Scanner;
public class TestOne {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
String strA = "A";
Scanner s = new Scanner(System.in);
System.out.println("Please enter a word : ");
String userWord = s.next();
char firstLetter = userWord.charAt(0);
if (strA.equals(String.valueOf(firstLetter))) { //Try this
System.out.println("Your word starts with letter A ");
}else {
System.out.println("Your word doesn't start with letter A ");
}
}
}
答案 4 :(得分:0)
我认为您可以尝试yourstring.indexOf('A')
方法,它会返回int
,如果是0,那么您找到" A"在第一个位置,否则没有。
语法
if(yourstring.indexOf('A') == 0 ){
//do something .....
}