2

所以我正在用java做一个回文检查器,我似乎遇到了障碍,这是我的代码到目前为止:

public class StringUtil
{

public static void main(String[] args)
{
    System.out.println("Welcome to String Util.");       
    Scanner word = new Scanner(System.in);

    String X = word.nextLine();       
    String R = palindrome(X);

    System.out.println();
    System.out.println("Original Word: " + X);     
    System.out.println("Palindrome: " + R);



}


public static boolean palindrome(String word)
{
   int t = word.length(); //length of the word as a number
   int r = 0;


   if(word.charAt(t) == word.charAt(r))
   {
       return true;
    }
    else
    return false;
}

到目前为止,我只希望它检查第一个字母是否与最后一个字母相同,但是当我编译它时,我在“String R = palindrome(X);”上得到一个不兼容的类型错误。我如何让它在它下面的输出语句上打印真或假?

4

4 回答 4

8

您的palindrome方法返回 a boolean,但您试图将其分配给 a StringR将变量的定义更改为boolean.

于 2013-04-04T16:56:39.440 回答
2

由于字符在 java 中的字符串(或数组)中索引为 0,因此最后一个字符的长度为 - 1

尝试

int t = word.length() - 1;

糟糕,这不是你遇到的问题。但是,一旦解决了类型错误,您就会立即注意到它。

于 2013-04-04T16:57:26.660 回答
1

word.charAt(t - 1),否则你的字符串计数过多,也返回“true”;如果您想使用 String 作为结果类型,则返回“false”;

于 2013-04-04T16:58:20.870 回答
0
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {
    public static void main(String args[]) {

        // String to be scanned to find the pattern.
        String line = "This order was placed for QT3000! OK?";
        String pattern = "(.*)(\\d+)(.*)";

        // Create a Pattern object
        Pattern r = Pattern.compile(pattern);

        // Now create matcher object.
        Matcher m = r.matcher(line);
        if (m.find()) {
            System.out.println("Found value: " + m.group(0));
            System.out.println("Found value: " + m.group(1));
            System.out.println("Found value: " + m.group(2));
        } else {
            System.out.println("NO MATCH");
        }
    }
}
于 2019-07-16T18:24:44.137 回答