result不能为null

u5i3ibmn  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(501)

我需要你的一些指导,目前我面临这个练习的挑战:
这段代码的目的是 String ( szoveg )并返回结果 row(sorIndex) 因此,如果 sorIndexString 数组(字符串szoveg被拆分成这个数组)。
如果请求的行数不在有效范围内(数组长度为0),则应返回一个 null 价值观。测试练习的ide返回一个错误,错误如下(匈牙利语+英语):
“一个getsor()遇到了ó杜斯内姆űkö迪克jól。尼姆lé泰兹ő sorindexet megadva null-t kell visszaadjon气象站ó杜斯。一个康斯特鲁克特参数é特瑞:“
“getsor()方法工作不正常。给定一个无效的sorindex,该方法应返回null。构造函数的参数:“—ide中此部分之后没有任何内容。

public String getSor(int sorIndex) {

        int sorok= szoveg.split("\n").length;

        String sor;

        if (sorIndex >= 0 && sorIndex <= sorok) {  

            String[] stringTomb = new String[sorok];

            stringTomb = szoveg.split("\n");

            sor = stringTomb[sorIndex];

        } else {

            sor = null;

      }

        return sor;

    }

有人知道我在哪里犯的错吗?
谢谢您!

jm81lzqq

jm81lzqq1#

错误消息告诉您如果 sorIndex 通过,然后 null 应该归还。这意味着 else 在你的逻辑分支中,它进入 if 以无效的方式。
原因是数组是0索引的,所以应该与行进行比较( sorok )以srict方式:

if (sorIndex >= 0 && sorIndex < sorok) {

这应该能解决问题。但是,您的代码计算 split 好几次而且是多余的。我会将其重构为:

public String getSor(int sorIndex) {
    if (szoveg == null) return null; // Handling the case when szöveg is not properly initialized
    String stringTomb[] = szoveg.split("\n");
    return ((sorIndex >= 0) && (sorIndex < szoveg.length)) ? stringTomb[sorIndex] : null;
}

我使用了三元运算符使它更可读、简洁和简短。

相关问题