java - 如果“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;
}
有谁知道我在哪里犯了错误?
谢谢!
解决方案
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;
}
我使用了三元运算符来使其更具可读性、简洁性和简短性。
推荐阅读
- javascript - Tooltip 传单的动态永久属性
- karate - karate-config.js 中的 callSingle() 用法
- reactjs - 如何让具有来自 Netlify 的域名的反应应用程序与弹性 beanstalk spring boot 后端连接
- popmotion - popmotion补间/从当前状态动画到给定状态
- python - 如何使用 Flask_Principal 和 Flask-Security 限制用户的访问?
- mysql - 有没有办法使用 jenkins 或免费工具以自动化方式实现数据库迁移?
- python - 如何在 Pandas 的单元格中删除具有多个值的行
- angular - NullInjectorError:AnimationBuilder 没有提供者!茉莉业力测试失败
- python - configargparse:有什么方法可以从 configargparse 中检查单个参数的多个值?
- git - 当多次调用同一个模块时,Terraform init 不会将 .git 目录下载到 .terraform/modules