Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在代码中使用三元运算符? p>因此,我的代码应该取字符串并返回字符串中间的字符,如果字符串有偶数个元素,则应该返回中间两个_Java - Fatal编程技术网

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的注释,它提到了我忘记修复的一个问题。我已经更改了我的答案,现在应该是正确的。它起了作用。非常感谢:)非常感谢它帮助我修复了代码:))谢谢你的建议,下次你的回答会更仔细:)