Java代码编辑

Java代码编辑,java,edit,Java,Edit,帮助,我无法使程序成功运行。它给了我一个错误,两个输入是期中成绩和期末成绩。我无法让它在适当的终端弹出时完全运行。我试图编写一个程序,接受用户的分数,并为未知数量的学生显示适当的字母等级。我的代码如下 import javax.swing.*; public class StudentGrades_Hann{ public static void main (String[] args) { String input ;

帮助,我无法使程序成功运行。它给了我一个错误,两个输入是期中成绩和期末成绩。我无法让它在适当的终端弹出时完全运行。我试图编写一个程序,接受用户的分数,并为未知数量的学生显示适当的字母等级。我的代码如下

        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") ;
        }

    }

    }   
import javax.swing.*;
公立班学生成绩{
公共静态void main(字符串[]args){
字符串输入;
input=JOptionPane.showInputDialog(“输入姓名、ID号、家庭作业标记、作业标记、期中标记、期末标记”\n所有入口必须用逗号分隔”);
国际通讯;
com=input.indexOf(“,”);
字符串名;
name=input.substring(0,com);
int com2;
com2=input.indexOf(“,”,com+1);
字符串ID号;
idnumber=input.substring(com+1,com2);
int com3;
com3=input.indexOf(“,”,com2+1);
串作业标记;
作业标记=输入子字符串(com2+1,com3);
int com4;
com4=input.indexOf(“,”,com3+1);
字符串赋值标记;
assignmentmark=input.substring(com3+1,com4);
int com5;
com5=input.indexOf(“,”,com4+1);
字符串中期标记;
中期标记=输入子串(com4+1,com5);
国际通信6;
com6=input.indexOf(“,”,com5+1);
字符串最终标记;
finalmark=输入子字符串(com4+1);
双as;
as=Double.parseDouble(assignmentmark.trim());
双hw;
hw=Double.parseDouble(homeworkmark.trim());
双毫米;
mm=Double.parseDouble(midtermark.trim());
双调频;
fm=Double.parseDouble(finalmark.trim());
串级;
双总标记;
totalmark=0.1*hw+0.1*as+0.3*mm+0.5*fm;
双mnf;
mnf=0.5*fm+0.3*mm;
如果(总标记<50 | | mnf<50){
showMessageDialog(null,name+idnumber+“Fail”);
}
否则如果(总分<85){
showMessageDialog(null,name+idnumber+A);
}
否则如果(总分<75){
showMessageDialog(null,name+idnumber+B);
}

否则,如果(totalmark您没有更新
的索引,
的下一个值

对于第二个值,如果输入是
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
}
`

我在线程“main”中遇到异常错误“exception” 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);

您在哪里得到错误?我的意思是哪一行。我不确定,但
input.indexOf(“,”);
这些行可能是问题的根源。请尝试在=input.split(“,”)中使用
String[];
它将按
分割您的输入,并将创建新的字符串数组。它不具体。我假设它将字符串转换为双精度。我在线程“main”java.lang.NumberFormatException中收到异常错误“exception”:对于输入字符串:“80,90”at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)在java.lang.Double.parseDouble(Double.java:510)在StudentGrades\u Hann.main(StudentGrades\u Hann.java:55)80是期中成绩的输入,90是期末成绩的输入mark@user2166241这可能是因为您试图使用double解析int。请将它们更改为
parseInt()