帮助,我无法让我的程序成功运行。它给出了两个输入中期标记和最终标记的错误。我无法通过适当的弹出窗口完全运行它。我曾尝试编写一个接受用户标记的程序,并为未知数量的学生显示相应的字母等级。我的代码如下。
import javax.swing.*;
public class StudentGrades_Hann{
public static void main (String[] args) {
String input ;
input= JOptionPane.showInputDialog(" Enter Name, \n ID Number,\n Homework Mark, \n Assignment Mark, \n Midterm Mark, \n and Final Mark \n All Entrys Must Be Separated By Commas");
int com;
com= input.indexOf(",");
String name ;
name = input.substring(0,com);
int com2;
com2= input.indexOf(",", com+1);
String idnumber ;
idnumber = input.substring(com+1, com2);
int com3;
com3= input.indexOf(",", com2+1);
String homeworkmark ;
homeworkmark = input.substring(com2+1, com3);
int com4;
com4= input.indexOf(",", com3+1);
String assignmentmark ;
assignmentmark = input.substring(com3+1, com4);
int com5;
com5= input.indexOf(",", com4+1);
String midtermmark ;
midtermmark = input.substring(com4+1, com5);
int com6;
com6= input.indexOf(",", com5+1);
String finalmark ;
finalmark = input.substring(com4+1);
double as ;
as = Double.parseDouble (assignmentmark.trim());
double hw ;
hw = Double.parseDouble (homeworkmark.trim());
double mm ;
mm = Double.parseDouble (midtermmark.trim());
double fm ;
fm = Double.parseDouble (finalmark.trim());
String grade ;
double totalmark ;
totalmark= 0.1*hw+0.1*as+0.3*mm+0.5*fm ;
double mnf ;
mnf= 0.5*fm+0.3*mm ;
if(totalmark < 50 || mnf < 50) {
JOptionPane.showMessageDialog(null,name + idnumber + "Fail") ;
}
else if (totalmark < 85) {
JOptionPane.showMessageDialog(null, name + idnumber + "A") ;
}
else if (totalmark < 75) {
JOptionPane.showMessageDialog(null,name + idnumber + "B") ;
}
else if (totalmark <65) {
JOptionPane.showMessageDialog(null, name + idnumber + "C");
}
else if (totalmark <=50) {
JOptionPane.showMessageDialog(null,name + idnumber + "D") ;
}
else {
JOptionPane.showMessageDialog(null, "Invalid Entry") ;
}
}
}
答案 0 :(得分:1)
您没有为下一个值更新,
的索引。
对于第二个值,如果输入为name, 1, 1, 1, 1, 1
,则会尝试解析
"1, 1"
。
使用String.split(",")
,检查数组中元素的数量是否符合预期,然后解析它们,就像这个伪代码一样:
String[] strings = input.split(",");
if (string.length == 6) { //name and 5 values
name = strings[0];
id = strings[1];
...
} else {
//provided values are incorrect
}
`
答案 1 :(得分:0)
我收到异常错误“主题中的异常”主“ java.lang.NumberFormatException:对于输入字符串:“80,90”
您试图在代码中的某处解析“80,90”,这是不可解析的双倍。所以你得到NumberFormatException。
因此,在寻找indexOf和substring操作时,不要费力。试试吧
String[] splitted = input.split(",");
你在分割给定字符串时遇到了错误。 我发现了错误。
String finalmark ;
finalmark = input.substring(com4+1);
应该是
String finalmark ;
finalmark = input.substring(com5+1);