Java 如何在代码中使用三元运算符? p>因此,我的代码应该取字符串并返回字符串中间的字符,如果字符串有偶数个元素,则应该返回中间两个
所以我的问题是当我这样写代码的时候Java 如何在代码中使用三元运算符? p>因此,我的代码应该取字符串并返回字符串中间的字符,如果字符串有偶数个元素,则应该返回中间两个,java,Java,所以我的问题是当我这样写代码的时候 public static String getMiddle(String word) { if(word == null) { return null; } else { int length = word.length() / 2; if(word.length() % 2 == 0)
public static String getMiddle(String word) {
if(word == null)
{
return null;
}
else
{
int length = word.length() / 2;
if(word.length() % 2 == 0)
{
return "" + word.charAt(length-1) + word.charAt(length);
}
else
{
return "" + word.charAt(length);
}
}
它工作得很好,但是当我试图用下面这样的一个语句重写代码时,ıget String index超出范围:2错误
public static String getMiddle(String word) {
int length = word.length() / 2;
return "" + ((word.length() % 2 == 0) ? (word.charAt(length-1)) +"" + (word.charAt(length+1)) : word.charAt(length)
这应该行得通
return(word.length()%2==0)
? “+word.charAt(长度-1)+word.charAt(长度)
:“”+word.charAt(长度);
字符串和字符之间的+
运算符不同
char two = '2'; // code point 50
char three = '3'; // code point 51
String twentyThree = ("" + '2') + '3'; // "23"
String charE = "" + ('2' + '3'); // "e", code point 101
首先,当您在getMiddle()中输入字符串时,它将永远不会为null。因此,您可以将第一个if语句更改为:
if(word.isEmpty()){returnnull;}
。还建议不要只返回null
return语句返回整数的原因是,对于三元运算符中的第一个值,您要添加两个字符,这将导致一个整数。要修复第一个值,请将其更改为:
(word.charAt(长度-1)+“”+word.charAt(长度+1))
。第二个值返回一个char,但该方法指示您返回一个字符串,因此这是另一个错误。要修复第二个值,请将其更改为(word.charAt(length)+“”)
当word.length()为偶数时,您的意思是什么?请使用选项并更详细地描述您的问题,以便面临相同问题的人能够找到您的问题(以及可能的答案,这是本网站的主要目的…)注意:在char+char
+
的情况下,运算符并不表示串联,而是表示加法(其中结果是Unicode表中字符位置/索引的总和)。在原始代码中,您有String+char+char
,其中String+char
是字符串的串联结果。@Pshemo我尽可能详细地编辑了问题,谢谢您的建议:)这是因为如果字符串有奇数元素,中间只有一个字母,所以它会返回单词.CARAT(长度),但是如果它有偶数个元素,它应该返回CARAT(长度-1)和CARAT(长度),我只注意到PSHEMO的注释,它提到了我忘记修复的一个问题。我已经更改了我的答案,现在应该是正确的。它起了作用。非常感谢:)非常感谢它帮助我修复了代码:))谢谢你的建议,下次你的回答会更仔细:)