如何检查args数组的结尾?
How to check the end of args array?
我正在用 Scala 编写一个解析器程序,它应该使用 "args" 读取输入并解析它。没关系我用:
while(!args.isEmpty){
if (Files.exists(Paths.get(args(j)))){
Statement=Statement.concat(inputXml)
Statement=Statement.concat(" ")
println(j)
}
else{
Statement=Statement.concat(args(j))
Statement=Statement.concat(" ")
println(j)
}
j=j+1
}
或
while(args.length !=0) {
if (Files.exists(Paths.get(args(j)))){
Statement=Statement.concat(inputXml)
Statement=Statement.concat(" ")
println(j)
}
else{
Statement=Statement.concat(args(j))
Statement=Statement.concat(" ")
println(j)
}
j=j+1
}
程序给我运行数组索引越界的时间异常!发送 2 个值作为输入:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
我该怎么办?我很困惑!
你的例外:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
是因为你没有打破while
循环; args
参数永远不会改变它的大小,所以你的 while
将永远存在 util j
超过 args
.
的大小
也许你可以试试:
int i = 0
while (i < args.length){
// some code here
i++;
}
或
for(int i = 0; i < args.length; i++){
// some code here
}
如果要遍历所有数组
根据您的描述,您需要在索引小于最大数组大小时遍历数组。如果您只是比较 args.length 值,循环条件将无限地继续评估真值,因为 args.length 将始终不同于 0(如果未更改)。
您需要以下内容:
for(i <- 0 until array.length){
...
考虑在不使用索引引用(越界错误的来源)的情况下迭代 args
,
for ( arg <- args ) yield {
if (Files.exists(Paths.get(arg))) xmlFile
else ""
}.mkString(" ")
这对于理解产生了一个 String
的集合,它被转换为 space 分隔的字符串 mkString
.
我正在用 Scala 编写一个解析器程序,它应该使用 "args" 读取输入并解析它。没关系我用:
while(!args.isEmpty){
if (Files.exists(Paths.get(args(j)))){
Statement=Statement.concat(inputXml)
Statement=Statement.concat(" ")
println(j)
}
else{
Statement=Statement.concat(args(j))
Statement=Statement.concat(" ")
println(j)
}
j=j+1
}
或
while(args.length !=0) {
if (Files.exists(Paths.get(args(j)))){
Statement=Statement.concat(inputXml)
Statement=Statement.concat(" ")
println(j)
}
else{
Statement=Statement.concat(args(j))
Statement=Statement.concat(" ")
println(j)
}
j=j+1
}
程序给我运行数组索引越界的时间异常!发送 2 个值作为输入:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
我该怎么办?我很困惑!
你的例外:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
是因为你没有打破while
循环; args
参数永远不会改变它的大小,所以你的 while
将永远存在 util j
超过 args
.
也许你可以试试:
int i = 0
while (i < args.length){
// some code here
i++;
}
或
for(int i = 0; i < args.length; i++){
// some code here
}
如果要遍历所有数组
根据您的描述,您需要在索引小于最大数组大小时遍历数组。如果您只是比较 args.length 值,循环条件将无限地继续评估真值,因为 args.length 将始终不同于 0(如果未更改)。
您需要以下内容:
for(i <- 0 until array.length){
...
考虑在不使用索引引用(越界错误的来源)的情况下迭代 args
,
for ( arg <- args ) yield {
if (Files.exists(Paths.get(arg))) xmlFile
else ""
}.mkString(" ")
这对于理解产生了一个 String
的集合,它被转换为 space 分隔的字符串 mkString
.