如果重复,如何返回字符串的第一个字符?

时间:2018-09-20 00:32:13

标签: java arrays string comparison

如何检查字符串中的第一个字符是否重复?我在任何地方都找不到答案!

char HamBurger(String s){

    for(int i=1;i<s.length();i++){
        if(s[i]==s[0]){
            return s[0];
        }
    }
    return "_";
}

这给了我这样的错误

file.java on line 4: error: array required, but 
String found
        if(s[i]==s[j]){
            ^
file.java on line 4: error: array required, but 
String found
        if(s[i]==s[j]){
                  ^
file.java on line 5: error: array required, but 
String found
            return s[j];
                    ^

对不起,我正在从C ++过渡到Java,对我来说这都是全新的!

3 个答案:

答案 0 :(得分:2)

我相信您想要charAt()方法:

char HamBurger(String s){

    for(int i=1;i<s.length();i++){
        if(s.charAt(i)==s.charAt(0)){
            return s.charAt(0);
        }
    }
    return '_';
}

[]的语法与Array一起使用。


您还可以使用lastIndexOf方法来检查是否还有其他与首字母匹配的char

public static char HamBurger(String s){
    return s.lastIndexOf(s.charAt(0)) == 0 ? '_' : s.charAt(0);
}

答案 1 :(得分:1)

如果要采用迭代方法,则应在要迭代的字符串上使用方法charAt(i)。该字符串不是Java中char的原始数组。

答案 2 :(得分:1)

检查您的错误,您传递了变量s,它是String,但是您通过使用与s相同的变量(即array)来访问其字符,从而给您错误。

如果我正确理解了您的问题,则要检查字符串的第一个字母是否再次出现在同一字符串的其他位置,如果有,请返回该字符。所以这是我的解决方案:

char HamBurger(String s){

    for(int i = 1; i < s.length(); i++){
        if(s.charAt(0) == s.charAt(i)){
            return s.charAt(0);
        }
    }
    return '_';
}

或者如果您想忽略大小写,可以将if条件更改为

if(s.toLowerCase().charAt(0) == s.toLowerCase().charAt(i)){
   //code
}