我想知道为什么我的方法无法使我的java"正确打印" 我知道它可能需要重新安排变量和解析......
帮助我完成这项工作!
包分配5;
导入javax.swing.JOptionPane;
公共课作业5 {
/**
* @param args
*/
public static void main(String[] args)
{
String name,advisor,major,more_data = "yes", value, output="", grade;
int year = 0,count1=0,count2=0,count3=0,count4=0;
int johnson_count=0,smith_count=0,mathcount=0,ciscount=0;
double mathtotalgpa=0,cistotalgpa=0;
double GPA=0,high_GPA=0,cis_average,math_average;
String high_advisor="",high_name="",high_major="",advisor_most="";
while(more_data.equals("yes"))
{
// READ THE DATA FIRST
name=get_name();
grade=get_year();
major=get_major();
value=get_value();
advisor=get_advisor();
//COUNT THE YEARS
if(year==1)
count1=count1+1;
else
if(year==2)
count2=count2+1;
else
if(year==3)
count3=count3+1;
else
if (year==4)
count4=count4+1;
//COUNT THE AMOUNT OF STUDENTS PER ADVISOR
if(advisor.equals("Johnson"))
johnson_count=johnson_count+1;
else
if(advisor.equals("Smith"))
smith_count=smith_count+1;
//CHECK IF CIS OR MATH
if(major.equals("Math"))
{
mathtotalgpa = mathtotalgpa+GPA;
mathcount = mathcount + 1;
}
if (major.equals("CIS"))
{
cistotalgpa = cistotalgpa + GPA;
ciscount = ciscount + 1;
}
//NAME OF STUDENT WITH HIGHEST GPA, SAVE THE NAME, MAJOR AND ADVISOR
if(year==4)
{
if(GPA>high_GPA)
{
high_GPA=GPA;
high_name=name;
high_advisor=advisor;
high_major=major;
}
}
//Ask if more data
more_data=JOptionPane.showInputDialog(null,"More data? yes/no",
"Input Data",JOptionPane.QUESTION_MESSAGE);
}//END OF WHILE LOOP
//NAME OF ADVISOR HAVING MOST ADVISEES
if(johnson_count>smith_count)
advisor_most="Johnson";
else
advisor_most="Smith";
//MAJOR HAVING THE MOST STUDENTS
if(mathcount>ciscount)
high_major="Math";
else
high_major="CIS";
//AVERAGE GPA CALCULATION - OUTSIDE OF THE LOOP
cis_average= calc_avg_cis (cistotalgpa, ciscount);
math_average=calc_avg_math (mathtotalgpa, mathcount);
//Output data
printing(count1, count2, count3, count4,
johnson_count,smith_count,
high_major,
math_average, cis_average,
high_name,high_GPA, high_advisor);
System.exit(0);
}
public static String get_name()
{
String name=JOptionPane.showInputDialog(null,"Enter student name ",
"Input Data",JOptionPane.QUESTION_MESSAGE);
return name;
}
public static String get_year()
{
String grade=JOptionPane.showInputDialog(null,"Enter the year, 1,2,3,or 4 ",
"Input Data",JOptionPane.QUESTION_MESSAGE);
int year = Integer.parseInt(grade);
return grade;
}
public static String get_major()
{
String major=JOptionPane.showInputDialog(null,"Enter the major, Math or CIS ",
"Input Data",JOptionPane.QUESTION_MESSAGE);
return major;
}
public static String get_value()
{
String value=JOptionPane.showInputDialog(null,"Enter the GPA ",
"Input Data",JOptionPane.QUESTION_MESSAGE);
double GPA=Double.parseDouble(value);
return value;
}
public static String get_advisor()
{
String advisor=JOptionPane.showInputDialog(null,"Enter Advisor ",
"Input Data",JOptionPane.QUESTION_MESSAGE);
return advisor;
}
public static double calc_avg_cis (double cistotalgpa, int ciscount)
{
double cis_average=cistotalgpa/ciscount;
return cis_average;
}
public static double calc_avg_math (double mathtotalgpa, int mathcount)
{
double math_average=mathtotalgpa/mathcount;
return math_average;
}
private static void printing(int count1, int count2, int count3, int count4,
int johnson_count, int smith_count,
String high_major, double math_average, double cis_average,
String high_name, double high_GPA, String high_advisor) {
//OUTPUT
String output="";
output=output+"The total number of freshman = "+count1+"\n";
output=output+"The total number of sophomores = "+count2+"\n";
output=output+"The total number of juniors = "+count3+"\n";
output=output+"The total number of seniors = "+count4+"\n"+"\n";
output=output+"The total number of advisees for Dr. Johnson = "+johnson_count+"\n";
output=output+"The total number of advisees for Dr. Smith = "+smith_count+"\n"+"\n";
output=output+"The major having the most students = "+high_major+"\n";
output=output+"The average GPA for Math majors = "+math_average+"\n";
output=output+"The average GPA for CIS majors = "+cis_average+"\n"+"\n";
output=output+"The Senior, "+high_name+" had the highest GPA of "+high_GPA+"\n";
output=output+"The Student is a "+high_major+" major, and the advisor is "+high_advisor;
JOptionPane.showMessageDialog(null, output, "Output:", JOptionPane.INFORMATION_MESSAGE);
}
}
答案 0 :(得分:1)
我可以确切地看到你做了什么。这只是因为我有一些空闲时间并通过了所有你的代码并使其可读。你是java新手吗?你的代码真的很混乱。
无论如何,你的问题在于代码的这一部分:
// READ THE DATA FIRST
name=get_name();
grade=get_year();
major=get_major();
value=get_value();
advisor=get_advisor();
,并且,通过扩展,使用get_year()和get_value()方法(为了清晰和良好的做法,我将其重命名为getYear()和getGPA())。
以getYear()为例:
public static String getYear()
{
String grade=JOptionPane.showInputDialog(null,"Enter the year, 1,2,3,or 4 ",
"Input Data",JOptionPane.QUESTION_MESSAGE);
int year = Integer.parseInt(grade);
return grade;
}
您正在解析整数,将其保存为年份,然后对其执行任何操作。 它应该是这样的:
public static int getYear()
{
String grade = JOptionPane.showInputDialog(null,"Enter the year, 1,2,3,or 4 ",
"Input Data",JOptionPane.QUESTION_MESSAGE);
int year = Integer.parseInt(grade);
return year;
}
顺便说一下,学习如何使用" + ="。