0

我正在尝试使用扫描仪创建一个程序,该程序从用户那里获取输入并确定输入是否以相同的字符开头和结尾。

import java.util.Scanner;
public class L7E6{
    public static void main(String[]args){
        String word;
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Please type a word: ");
        word = keyboard.nextLine();

        if (word.charAt(0).equals(word.length()-1)){
            System.out.println("The word "+word+" begins and ends with the character "+word.charAt(0));
        }
        else{
            System.out.println("The word "+word+" begins with "+word.charAt(0)+" and ends with "+    (word.length()-1)+" these characters are not the same.");
        }
    }
} 

我以前使用charAt(0)and.length()-1来确定第一个和最后一个字符,但它似乎在这里不起作用。

4

6 回答 6

2

也许你应该这样做if (word.charAt(0).equals(word.charAt(word.length()-1))){...}。在您的代码中,您将第一个字符与数字进行比较。

于 2013-10-30T14:06:18.723 回答
0

你甚至可以这样做,因为你正在比较chars

if (word.charAt(0) == word.charAt(word.length()-1)) {
...
}
于 2013-10-30T14:09:38.977 回答
0
if(str.charAt(0)==str.charAt(str.length()-1)){
            System.out.println("equal");
        }
于 2013-10-30T14:14:21.040 回答
0

还没有人提出这个建议:

if ( word.endsWith(String.valueOf(word.charAt(0))) )
{
    System.out.println("Success!");
}

这不会处理空字符串,但会处理空字符串。

于 2014-05-16T19:19:11.780 回答
-1

您可以使用正则表达式,而不是使用字母索引:

if (word.matches("(.).*\\1|.") {

正则表达式的第一部分使用对捕获的第一个字母的反向引用来断言第一个和最后一个字母是相同的。
“|。” (意思是“或单个字符”)是处理单个字母单词的边缘情况。

于 2013-10-30T14:10:42.730 回答
-1

if (word.charAt(0)==(word.charAt(word.length()-1))) 这将起作用。equals() 仅用于检查字符串的相等性。

于 2019-08-12T02:33:15.003 回答