gpt4 book ai didi

java - 我这个程序做错了什么?

转载 作者:行者123 更新时间:2023-11-30 07:38:23 25 4
gpt4 key购买 nike

我正在尝试编写一个代码来将字母等级转换为数值。我有这段代码,但是当我运行它时,我收到一条错误消息 java.lang.StringIndexOutOfBoundsException

我做错了什么?

这是代码:

import java.util.Scanner;


public class Lab6Smalls {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);

String grade;
String letter1;
String letter2;
double gpa = 0;

System.out.print("Enter a letter grade: ");

grade = scan.nextLine();
letter1 = grade.substring(0,1);
letter2 = grade.substring(1,2);

if (letter1.equals("A") && letter2.equals("+")){
gpa = 4.3;
} else if (letter1.equals("A")){
gpa = 4.0;
} else if (letter1.equals("B")){
gpa = 3.0;
} else if (letter1.equals("C")){
gpa = 2.0;
} else if (letter1.equals("D")){
gpa = 1.0;
} else if (letter1.equals("F")){
gpa = 0.0;
} else {
System.out.println("The value is invalid.");
}

if (!letter1.equals("F")){
if(letter2.equals("+") && !letter1.equals("A")) gpa += 0.3;
else if(letter2.equals("-")) gpa -= 0.3;
}

System.out.println("The numerical value is " + gpa + ".");
}
}

最佳答案

出现错误,因为 A+ 以外的字母没有第二个值

A+有两个字母

B 有一个,所以当你试图找到第二个时,它就坏了

C 有一个,所以当你试图找到第二个时,它就会崩溃

D 有一个,所以当你试图找到第二个时,它就会损坏

您想要在检索第二个值之前检查它是否存在。试试这个

String letter2 = "";
grade = scan.nextLine();
letter1 = grade.substring(0,1);

// Check, if there is a second letter, get it.
if (grade.length() >= 2) {
letter2 = grade.substring(1,2);
}

关于java - 我这个程序做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35050874/

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