2016-06-16 3 views
-8

, поэтому я борюсь с этой проблемой, которая кажется, я не могу понять, я совершенно новый в java, и мне нужна помощь .. поэтому я делаю простую программу, которая определит, прошли ли вы предмет или не через точечные оценки и, кажется, он определяет только ELSE ЗАЯВЛЕНИЕ .. вот код .. это будет действительно помочь мне много .. спасибо заранееесли else только выполняет else в java

String studID=" ",course=" ", name=" ", dept=" ", subj=" "; 
    double exam1=0, exam2=0, exam3=0, exam4=0; 
    double avg, pgrade; 
    String msg=" "; 

studID =JOptionPane.showInputDialog("Please fill-out the following fields:" 
     + "\nStudent ID: "); 
name = JOptionPane.showInputDialog("Name: "); 
dept = JOptionPane.showInputDialog("Department: "); 
course = JOptionPane.showInputDialog("Course: "); 
subj = JOptionPane.showInputDialog("Subject: "); 
exam1 = Double.parseDouble(JOptionPane.showInputDialog("First Examination: ")); 
exam2 = Double.parseDouble(JOptionPane.showInputDialog("Second Examination: ")); 
exam3 = Double.parseDouble(JOptionPane.showInputDialog("Third Examination: ")); 
exam4 = Double.parseDouble(JOptionPane.showInputDialog("Final Examination: ")); 
avg = (exam1 + exam2 + exam3 + exam4)/4; 
pgrade =(100 - avg + 10)/10; 

if (avg==100) 
{ 
    msg = "passed - Excellent!"; 
}else if (avg>100 && avg<89) 
{ 
    msg = "Passed - Very Good!"; 
}else if (avg>90 && avg<84) 
{ 
    msg = "Passed - Average"; 
}else if (avg>85 && avg<79) 
{ 
    msg = "Passed - Good"; 
}else if (avg>80 && avg<74) 
{ 
    msg = "Passed - Satisfactory"; 
}else if (avg>75 && avg<49) 
{ 
    msg = "Failed"; 
}else if (avg>50 && avg<0.00) 
{ 
    msg = "Dropped"; 
}else if (avg==0.00 && avg<0.00) 
{ 
    msg = "No such Grade"; 
}else 
{ 
    msg = "Out of Range or Invalid."; 
} 


JOptionPane.showMessageDialog(null, new JTextArea (
     "|======Student Details=======|" 
    + "\n|StudentID:\t" + studID +"\t |" 
    + "\n|Name:\t" + name + "\t |" 
    + "\n|Department:\t" +dept+ "\t |" 
    + "\n|Course:\t"+course+"\t |" 
    + "\n|Subject:\t"+subj + "\t |" 
    + "\n|=======Grade Details======= |" 
    + "\n|First  Second  Third  Fourth |" 
    + "\n|"+exam1+"  "+exam2+"  "+exam3+"  "+exam4+"\t  |" 
    + "\n|Average:\t" +avg + "\t|" 
    + "\n|Point Grade\t:" +pgrade+"\t|" 
    + "\n|Remarks:"+msg+"\t|" 
    + "\n|=============================|")); 





} 

}

+11

Забудьте Java на минуту: какие числа больше 100 * и * меньше 89? –

+0

'avg> 100 && avg <89' Число не может быть ВЫШЕ 100 и НИЖЕ 89 одновременно. То же самое относится ко всем другим условиям 'else if' – Arc676

+1

@Berger более вероятно' <=' and '> = 'вместо'> 'и' <'соответственно. –

ответ

3

условие является неправильным потому что для включения переменной в диапазон вы должны установить

else if(avg>89 && avg<100) 
+2

Честно, проверяя верхний диапазон '&& avg <100' совершенно не нужен, потому что не должно превышать 100. Плюс, так как это цепочка 'if else', и она работает сверху вниз, это займет первое условие, которое является истинным, и пропустите остальные. – 4castle

+0

Я знаю, но, чтобы быть более упрощенным, я решил написать его – Irazza

0

Ваши сравнения были неправильными для начала, поэтому попробуйте что-то в соответствии с тем, что я исправил, это не самый лучший доступ, чтобы вы могли его улучшить.

String studID=" ",course=" ", name=" ", dept=" ", subj=" "; 
    double exam1=0, exam2=0, exam3=0, exam4=0; 
    double avg, pgrade; 
    String msg=" "; 

studID =JOptionPane.showInputDialog("Please fill-out the following fields:" 
     + "\nStudent ID: "); 
name = JOptionPane.showInputDialog("Name: "); 
dept = JOptionPane.showInputDialog("Department: "); 
course = JOptionPane.showInputDialog("Course: "); 
subj = JOptionPane.showInputDialog("Subject: "); 
exam1 = Double.parseDouble(JOptionPane.showInputDialog("First Examination: ")); 
exam2 = Double.parseDouble(JOptionPane.showInputDialog("Second Examination: ")); 
exam3 = Double.parseDouble(JOptionPane.showInputDialog("Third Examination: ")); 
exam4 = Double.parseDouble(JOptionPane.showInputDialog("Final Examination: ")); 
avg = (exam1 + exam2 + exam3 + exam4)/4; 
pgrade =(100 - avg + 10)/10; 

if (avg==100) 
{ 
    msg = "passed - Excellent!"; 
}else if (avg<100 && avg>89) 
{ 
    msg = "Passed - Very Good!"; 
}else if (avg<90 && avg>84) 
{ 
    msg = "Passed - Average"; 
}else if (avg<85 && avg>79) 
{ 
    msg = "Passed - Good"; 
}else if (avg<80 && avg>74) 
{ 
    msg = "Passed - Satisfactory"; 
}else if (avg<75 && avg>49) 
{ 
    msg = "Failed"; 
}else if (avg<50 && avg>0.00) 
{ 
    msg = "Dropped"; 
}else if (avg==0.00)//no one gets below zero in a fair system 
{ 
    msg = "No such Grade"; 
}else 
{ 
    msg = "Out of Range or Invalid."; 
} 


JOptionPane.showMessageDialog(null, new JTextArea (
     "|======Student Details=======|" 
    + "\n|StudentID:\t" + studID +"\t |" 
    + "\n|Name:\t" + name + "\t |" 
    + "\n|Department:\t" +dept+ "\t |" 
    + "\n|Course:\t"+course+"\t |" 
    + "\n|Subject:\t"+subj + "\t |" 
    + "\n|=======Grade Details======= |" 
    + "\n|First  Second  Third  Fourth |" 
    + "\n|"+exam1+"  "+exam2+"  "+exam3+"  "+exam4+"\t  |" 
    + "\n|Average:\t" +avg + "\t|" 
    + "\n|Point Grade\t:" +pgrade+"\t|" 
    + "\n|Remarks:"+msg+"\t|" 
    + "\n|=============================|")); 





}} 
+0

действительно помог мне много, спасибо! im все еще возникают проблемы с операторами tbh. – Maximus

+0

Просто предположим, что вы занимаетесь математикой на базовом уровне. Программирующие компьютеры - все о правильном вычислении в нужном месте в нужное время. Его ничего абстрактного, его «виртуальная реализация» физического решения. лол –

Смежные вопросы