如果 "sorIndex" 无效,我的代码中的结果不为空

Result not null in my code, if "sorIndex" is invalid

我需要你的一些指导,目前我面临着这个练习的挑战:

此代码的目的是将 String(szoveg) 拆分为行并返回结果 row(sorIndex) 作为结果,如果 sorIndexString数组的范围内(字符串szoveg被拆分到这个数组中)。

如果请求的行数不在有效范围内(数组的 0 长度),它应该返回一个 null 值。 IDE为测试习题returns一个错误,是下面的(匈牙利语+英语):

"A getSor() metódus nem működik jól. Nem létező sorIndexet megadva null-t kell visszaadjon a metódus. A konstruktor paramétere:"

"The getSor() method is not working properly. Given a not valid sorIndex, the method should return null. The parameter of the constructor:" -there is nothing after this part in the 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;

    }

有谁知道我哪里出错了吗?

谢谢!

错误消息告诉您,如果传递了无效的 sorIndex,则应返回 null。这意味着它不是进入您逻辑中的 else 分支,而是以无效的方式进入 if

原因是数组是从 0 开始索引的,因此您应该严格地与​​行 (sorok) 进行比较:

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;
}

我使用了三元运算符来使其更具可读性、简洁和简短。