首页 > 解决方案 > 如果“sorIndex”无效,结果在我的代码中不为空

问题描述

我需要你的一些指导,目前我在这个练习中遇到了这个挑战:

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

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

“一个 getSor() 方法 nem működik jól。Nem létező sorIndexet megadva null-t kell visszaadjon 一个方法。一个 konstruktor 参数:”

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

    }

有谁知道我在哪里犯了错误?

谢谢!

标签: javanullnotnull

解决方案


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

这样做的原因是数组是 0 索引的,因此您应该sorok以严格的方式与 rows ( ) 进行比较:

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

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


推荐阅读