2013-02-28 13 views
0

Вот код в вопросе:массивы ссылок метание ошибки, связанные с сканером

public class GradeBookRunner 
{ 
public static void main(String args[]) 
    { 
    out.println("Welcome to the Class Stats program!"); 
    int num = 1; 
    int count = 0; 
    String stuGrades = ""; 
    String stuName = ""; 
    Scanner keyboard = new Scanner(System.in); 
    out.print("What is the name of this class? "); 
    String clsName = keyboard.nextLine(); 
    out.println("\n"); 
    out.print("How many students are in this class? "); 
    int clsNum = keyboard.nextInt(); 
    Class CSAB = new Class(clsName, clsNum); 
    out.println("\n"); 
    out.print("Enter the name of student 1 : "); 
    stuName = keyboard.nextLine(); 
    keyboard.next(); 
    out.print("Enter the grades for " + stuName + "\nUse the format x - grades (2 - 100 100) : "); 
    //count = keyboard.nextInt(); 
    //keyboard.next(); 
    //for(int i = 0; i < count; i++) 
    //{ 
     stuGrades += keyboard.nextLine() + " "; 
    //} 

    Student add = new Student(stuName,stuGrades); 
    CSAB.addStudent(num, add); 
    stuGrades = ""; 
    num++; 
    out.println(); 

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

Grades.java: http://pastebin.com/ahYRS2WD

Student.java: http://pastebin.com/EBF4BBCb

Class.java: http://pastebin.com/A1C9fCL1

Моя проблема возникает после запуска кода и ввода ввода для имени класса, размера класса, имени студента, все это нормально, это следующий бит, который вызывает у меня ошибку, когда я вводил оценки для учащегося, такие как 3 - 70.2 65.3 45.1

EDIT Вот ошибка я получаю:

Добро пожаловать в программу класса Статистика! Как называется этот класс? ap

Сколько студентов в этом классе? 1

Введите имя студента 1: вряд ли

Введите классы для едва

Используйте формат х - х классов (2 - 100 100): Исключение в потоке "основного"

ява .util.NoSuchElementException

at java.util.Scanner.throwFor(Unknown Source) 

at java.util.Scanner.next(Unknown Source) 

at java.util.Scanner.nextInt(Unknown Source) 

at java.util.Scanner.nextInt(Unknown Source) 

at lab19b.Grades.setGrades(Grades.java:31) 

at lab19b.Grades.<init>(Grades.java:25) 

at lab19b.Student.<init>(Student.java:27) 

at lab19b.GradeBookRunner.main(GradeBookRunner.java:42) 

EDIT2

я теперь думаю вопрос в том, что мне нужно stuGrades читать во всей линии, такие как 3 - 70.2 65.3 45.1, но я не могу понять, какой сканер заявление мне нужно поставить ввод с клавиатуры в строку

EDIT3

Вот мое свидетельство правильно работающих grades.java:

package lab19b; 

import java.util.Arrays; 
import java.util.Scanner; 
import static java.lang.System.*; 
import static java.util.Arrays.*; 

public class GradesTester 
{ 
public static void main(String args[]) 
{ 
    Grades test = new Grades("5 - 90 85 95.5 77.5 88"); 
    out.println(test); 
    out.println("sum = " + test.getSum()); 
    out.println("num grades = " + test.getNumGrades());           
    out.println("low grade = " + test.getLowGrade());  
    out.println("high grade = " + test.getHighGrade()+ "\n\n"); 

    test.setGrades("9 - 10 70 90 92.5 85 95.5 77.5 88 100.0"); 
    out.println(test); 
    out.println("sum = " + test.getSum()); 
    out.println("num grades = " + test.getNumGrades());           
    out.println("low grade = " + test.getLowGrade());  
    out.println("high grade = " + test.getHighGrade()); 

с выходом, как это: 90,0 85,0 95,5 77,5 88,0

сумма = 436,0

NUM сортов = 5

низкосортных = 77,5

высокий класс = 95,5

10,0 70,0 90,0 92,5 85,0 95,5 77,5 88,0 100,0

сумма = 708.5

классов Num = 9

низкосортных = 10,0

высокий класс = 100,0

+0

Какую ошибку он выбрасывает? –

+0

Пожалуйста, сообщите об ошибке, которую вы получили. Если это исключение, разместите трассировку стека. Если вы поймаете исключение, измените код для печати трассировки стека (exception.printStackTrace()) – atk

+0

добавлена ​​ошибка в мой OP –

ответ

0

Ваш вопрос с общественной пустоте setGrades(String gradeList) функции в классах Line 27 Это означает, что весь gradeList что-то вроде «а». Преобразуйте это в функцию массива и прочитайте отдельную строку. [А], [B], [C]. Используйте split функцию String, чтобы сформировать массив и заполнить ваш grades[i]

Этот метод в сканере вызывает вопрос, который означает, что не осталось разобрать после scan.nextInt() ввода;

// If we are at the end of input then NoSuchElement; 
    903  // If there is still input left then InputMismatch 
    904  private void throwFor() { 
    905   skipped = false; 
    906   if ((sourceClosed) && (position == buf.limit())) 
    907    throw new NoSuchElementException(); 
    908   else 
    909    throw new InputMismatchException(); 
    910  } 
+0

Это далеко за пределами моего диапазона знаний ..... –

+0

прочитал мой отредактированный ответ – user1428716

+0

, так почему бы классы, ученики и классы, все работают надлежащим образом в своих файлах бегунов, но когда дело доходит до ссылок на class.java, который в конечном итоге будет ссылаться на все остальные, я получаю ошибки? –

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