不确定我做错了什么,简单的中间子串

Jav*_*bie 0 java string

这是我正在做的事情的链接,简单的练习:http:
//codingbat.com/prob/p162477

然而,它告诉我,当它使前面=假,

        public String theEnd(String str, boolean front) {
            String stringPart;
            if (front = true) {
                stringPart = str.substring(0, 1);
            } else {
                stringPart = str.substring(str.length()-1,str.length());
            }

            return stringPart;
         }
Run Code Online (Sandbox Code Playgroud)

无论如何,它返回时都是真的.我不想学习坏习惯:(

EX:大象返回E,应该返回t.我稍后会再回来查看,我需要休息一下LOONNNNG.可能犯了愚蠢的错误

Jon*_*eet 6

这就是问题:

if (front = true)
Run Code Online (Sandbox Code Playgroud)

你的意思是:

if (front == true)
Run Code Online (Sandbox Code Playgroud)

目前它正在分配 front一个新值true,然后评估该结果并发现它是真的 - 所以它总是需要第一个字符.

有三种方法可以解决这个问题.一个是如上所述,只是要更加小心.一个是使用:

if (true == front)
Run Code Online (Sandbox Code Playgroud)

这将防止您的错字,因为你不能分配常量true.

但是,我宁愿完全摆脱文字:

if (front)
Run Code Online (Sandbox Code Playgroud)

但是,您可以使用条件运算符使整个方法更简单:

public String theEnd(String str, boolean front) {
    int start = front ? 0 : str.length() - 1;
    return str.substring(start, start + 1);
}
Run Code Online (Sandbox Code Playgroud)