2013-07-20 2 views
0

Каждый раз, когда я запускаю этот код, он добирается до места, где он запрашивает идентификатор студента, и он распечатывает часть идентификатора ученика и часть домашней работы. Зачем? Я пытаюсь получить строку для имени, id, домашней работы, лаборатории, экзамена, обсуждения и проекта, тогда в другом классе я разделяю домашнюю работу, лабораторию и строки экзамена на массивы, а затем разбираю эти массивы в двойные. После того, как я разобрал их, я суммирую их по другому методу и добавляю итоговые данные с проектом и обсуждением, чтобы получить общий балл.несколько принтов для каждого входа. Зачем?

import java.util.Scanner; 
import java.io.*; 

public class GradeApplication_Kurth { 
public static void main(String[] args) throws IOException 
{ 
    Student_Kurth one; 
    int choice; 

    boolean test = true; 

    do 
    { 
     Scanner keyboard = new Scanner(System.in); 
     PrintWriter outputFile = new PrintWriter("gradeReport.txt"); 

     System.out.println("Please select an option: \n1. Single Student Grading \n2. Class Grades \n3. Exit"); 
     choice = keyboard.nextInt(); 

     switch (choice) 
     { 
     case 1 : 
      System.out.println("Please enter your Student name: "); 
      String name = keyboard.next(); 
      System.out.println("Please enter you Student ID: "); 
      String id = keyboard.nextLine(); 
      System.out.println("Please enter the 10 homework grades seperated by a space: "); 
      String homework = keyboard.next(); 
      System.out.println("Please enter the 6 lab grades seperated by a space: "); 
      String lab = keyboard.nextLine(); 
      System.out.println("Please enter the 3 exam grades seperated by a space: "); 
      String exam = keyboard.nextLine(); 
      System.out.println("Please enter the discussion grade: "); 
      double discussion = keyboard.nextDouble(); 
      System.out.println("Please enter the project grade: "); 
      double project = keyboard.nextDouble(); 

      one = new Student_Kurth(name, id, homework, lab, exam, discussion, project); 

      outputFile.println(one.toFile()); 
      System.out.println(one); 
      break; 
     case 2 : 
      File myFile = new File("gradeReport.txt"); 
      Scanner inputFile = new Scanner(myFile); 
      while(inputFile.hasNext()) 
      { 
       String str = inputFile.nextLine(); 
       System.out.println("\n" + str); 
      } 
      break; 
     case 3 : 
      test = false; 
      keyboard.close(); 
      outputFile.close(); 
      System.exit(0); 
     } 
    } while (test = true); 
} 
} 

второй класс

public class Student_Kurth 
{ 
public String homework; 
public String name; 
public String id; 
public String lab; 
public String exam; 
public double project; 
public double discussion; 
public double[] hw = new double[10]; 
public double[] lb = new double[6]; 
public double[] ex = new double[3]; 
public final double MAX = 680; 
public double percentage; 
public String letterGrade; 

public Student_Kurth() 
{ 
    homework = null; 
    name = null; 
    id = null; 
    lab = null; 
    exam = null; 
    project = 0; 
    discussion = 0; 
} 

public Student_Kurth(String homework, String name, String id, String lab, String exam, double project, double discussion) 
{ 
    this.homework = homework; 
    this.name = name; 
    this.id = id; 
    this.lab = lab; 
    this.exam = exam; 
    this.project = project; 
    this.discussion = discussion; 
} 

public void Homework(String homework) 
{ 
    String delims = " "; 
    String[] tokens = this.homework.split(delims); 
    int tokenCount = tokens.length; 
    for(int i = 0; i < tokenCount; i++) 
    { 
     hw[i] = Double.parseDouble(tokens[i]); 
    } 
} 

public void Lab(String lab) 
{ 
    String delims = " "; 
    String[] tokens = this.lab.split(delims); 
    int tokenCount = tokens.length; 
    for(int i = 0; i < tokenCount; i++) 
    { 
     lb[i] = Double.parseDouble(tokens[i]); 
    } 
} 

public void Exam(String exam) 
{ 
    String delims = " "; 
    String[] tokens = this.exam.split(delims); 
    int tokenCount = tokens.length; 
    for(int i = 0; i < tokenCount; i++) 
    { 
     ex[i] = Double.parseDouble(tokens[i]); 
    } 
} 

public double getHomeworkTotal(double[] hw) 
{ 
    double hwTotal = 0; 
    for(int i = 0; i < hw.length; i++) 
    { 
     hwTotal += hw[i]; 
    } 
    return hwTotal; 
} 

public double getLabTotal(double[] lb) 
{ 
    double lbTotal = 0; 
    for(int i = 0; i < lb.length; i++) 
    { 
     lbTotal += lb[i]; 
    } 
    return lbTotal; 
} 

public double getExamTotal(double[] ex) 
{ 
    double exTotal = 0; 
    for(int i = 0; i < ex.length; i++) 
    { 
     exTotal += ex[i]; 
    } 
    return exTotal; 
} 

public double getTotalScores(double getExamTotal, double getLabTotal, double getHomeworkTotal) 
{ 
    return getExamTotal + getLabTotal + getHomeworkTotal + this.project + this.discussion; 
} 

public double getPercentage(double getTotalScores) 
{ 
    return 100 * getTotalScores/MAX; 
} 

public String getLetterGrade(double getPercentage) 
{ 
    if(getPercentage > 60) 
    { 
     if(getPercentage > 70) 
     { 
      if(getPercentage > 80) 
      { 
       if(getPercentage > 90) 
       { 
        return "A"; 
       } 
       else 
       { 
        return "B"; 
       } 
      } 
      else 
      { 
       return "C"; 
      } 
     } 
     else 
     { 
      return "D"; 
     } 
    } 
    else 
    { 
     return "F"; 
    } 
} 

public void getLetter(String getLetterGrade) 
{ 
    letterGrade = getLetterGrade; 
} 

public void getPercent(double getPercentage) 
{ 
    percentage = getPercentage; 
} 
public String toFile() 
{ 
    String str; 
    str = " " + name + " - " + id + " - " + percentage + " - " + letterGrade; 
    return str; 
} 

public String toString() 
{ 
    String str; 
    str = "Student name: " + name + "\nStudent ID: " + id + "\nTotal Score: " + getTotalScores(getExamTotal(ex), getLabTotal(lb), getHomeworkTotal(hw)) + 
      "\nMax Scores: " + MAX + "Percentage: " + percentage + "Grade: " + letterGrade; 
    return str; 
} 

}

ответ

2

В конце переключателя, у вас есть

while (test = true) 

Вы, вероятно, хотите изменить что

while (test == true) 

Кроме того, возьмите эти строки из цикла:

Scanner keyboard = new Scanner(System.in); 
PrintWriter outputFile = new PrintWriter("gradeReport.txt"); 
+3

бы не просто 'в то время как (тест)' быть намного понятнее а nd succinct? 'while (test == true)' добавляет дополнительный текст без дополнительной ценности или ясности. –

+1

@HovercraftFullOfEels Возможно, но я написал это так, чтобы противопоставить ошибочное назначение и сравнение. Я лично использую 'while (test)'. – Ermir

1

В дополнение к ответу Ermir, эта линия не будет захватывать все ранги:

System.out.println("Please enter the 10 homework grades seperated by a space: "); 
String homework = keyboard.next(); 

Keyboard.next читает только до тех пор, следующий маркер разделителя, так что если вы хотите, чтобы захватить 10 классов, разделенных пробелами, которые необходимо захватить всю строку, как:

System.out.println("Please enter the 10 homework grades separated by a space: "); 
String homework = keyboard.nextLine(); 
+0

Я сменил домашнюю работу, экзамен и лабораторию на keyboard.nextLine, и теперь у меня есть имя, распечатывающее и принимающее вход, тогда id, домашнее задание и лаборатория распечатываются и запрашивают 1 вход. – Fireurza

+0

Измените имя на nextLine(). – MilesHampson

+0

Это исправление, потому что, если вы используете 'next()' и введите имя, а затем 'enter',' next' примет имя, а nextLine возьмет что-нибудь, оставшееся в строке (ничего) для StudentId. – MilesHampson

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