gpt4 book ai didi

java - NumberFormatException 消息没有改变?

转载 作者:行者123 更新时间:2023-12-01 09:58:57 26 4
gpt4 key购买 nike

在下面的代码中,如何更改不断显示的消息(“C++”);根据数组的元素?为什么会发生这种情况?为什么消息没有改变?

import java.util.*;

public class Testslsl {

static Scanner input = new Scanner(System.in);

public static void main(String[] args) {

String languages[] = {"C", "C++", "Java", "Perl","Python" };

int num;

for (int c = 0; c <= 5; c++) {
try {
System.out.println(languages[c]);

if (languages[c].charAt(2)=='+')
System.out.println("it is C plus plus");

num = Integer.parseInt(languages[1]);
}
catch (NumberFormatException e) {
System.out.println(e);
input.next();
}
catch (ArrayIndexOutOfBoundsException ex) {
System.out.println(ex);
}
catch (StringIndexOutOfBoundsException exp) {
System.out.println(exp);
}
}
}
}

输出:

C
java.lang.StringIndexOutOfBoundsException: String index out of range: 2
C++
it is C plus plus
java.lang.NumberFormatException: For input string: "C++"
Java
java.lang.NumberFormatException: For input string: "C++"
Perl
java.lang.NumberFormatException: For input string: "C++"
Python
java.lang.NumberFormatException: For input string: "C++"
java.lang.ArrayIndexOutOfBoundsException: 5

最佳答案

消息是相同的,因为您始终获得 languages[1],它始终是字符串 C++

为了迭代数组的其他元素,您需要使用索引 c:

num = Integer.parseInt(languages[c]);

尽管如此,正如评论中提到的,由于您有一个 String 数组,所以不太清楚为什么要使用 Integer.parseInt 来获得 int。它总是会导致 NumberFormatException

相反,您应该:

String language = languages[c];

关于java - NumberFormatException 消息没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36959164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com