неуместная ошибка токена Java в вспомогательных методах - PullRequest
0 голосов
/ 22 февраля 2012

Я пишу класс, который является стенограммой студента, и я создал вспомогательный метод, который добавит курс, я реализовал класс транскрипта через HashMap, имя курса - это ключ, а оценка - его значение.Когда я пытаюсь протестировать свой класс, я получаю сообщение об ошибке при использовании метода добавления курса, чтобы добавить имя курса только без оценки, я получаю эту ошибку

Несколько маркеров в этой строке - Синтаксическая ошибка в токене ""CS200 "", удалите этот токен - синтаксическая ошибка на токене (ах), неуместные конструкции (ы)

и когда я использую тот же метод с именем курса с оценкой, я получаю эту ошибку

Несколько маркеров в этой строке - Синтаксическая ошибка на токенах, удалите эти токены - Синтаксическая ошибка на токене (ах), неуместные конструкции (ы)

Я довольноконечно, мой код правильный, но я не знаю, где я ошибся, код, который я написал здесь:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Transcript
{
    private Map<String, Double> transcript;
    private String transcriptInString = "";

    public Transcript ()
    {
        transcript = new HashMap<String, Double> (30);
    }

    /* ---------------------------------------------- Helper Methods ---------------------------------------------- */

    public void addCourse (String courseName, double grade)
    {
        transcript.put(courseName, grade);
    }

    public void addCourse (String courseName)
    {
        addCourse(courseName, 0.0);
    }

    public String toString ()
    {
        Set<String> transcriptKeys = transcript.keySet();
        Iterator<String> keyIterator = transcriptKeys.iterator();
        String courseName;

        while (keyIterator.hasNext())
        {
            courseName = keyIterator.next();
            transcriptInString += courseName + "\t" + transcript.get(courseName) + "\n";
        }

        return transcriptInString;
    }
}

и это класс драйвера, который я написал, чтобы проверить мой код, если он дает мне правильныйРезультаты

public class Driver
{
    Transcript t = new Transcript ();
    t.addCourse("CS200", 100);
}

Спасибо, ребята, за помощь

Ответы [ 3 ]

0 голосов
/ 22 февраля 2012

Оператор t.addCourse("CS200", 100); недопустим в объявлении части класса.Переместите его куда-нибудь еще (например, внутри конструктора). Поэтому вместо:

public class Driver
{
    Transcript t = new Transcript ();
    t.addCourse("CS200", 100);
}

у вас должно быть:

public class Driver
{
    Transcript t = new Transcript ();
    public Driver(){
        t.addCourse("CS200", 100);
    }
}

И если вы хотите, чтобы все было статичным, вы могли бы сделатьследующие

public class Driver
{
    static Transcript t = new Transcript ();
    static{
        t.addCourse("CS200", 100);
    }
}
0 голосов
/ 22 февраля 2012

Вам нужно поместить код внутри класса Driver в метод (возможно, основной метод?).

Пример:

public class Driver {
    public static void main(String[] args) {
        Transcript t = new Transcript ();
        t.addCourse("CS200", 100);
    }
}
0 голосов
/ 22 февраля 2012

Посмотрите на свой Driver класс:

public class Driver
{
    Transcript t = new Transcript ();
    t.addCourse("CS200", 100);
}

Ваша первая строка в порядке - она ​​объявляет переменную. Но второе утверждение просто пытается выполнить метод - но это не в контексте метода, конструктора, блока инициализатора и т. Д.

Вы можете поместить его в конструктор:

public class Driver
{
    public Driver()
    {
        Transcript t = new Transcript ();
        t.addCourse("CS200", 100);
    }
}

или, может быть, метод:

public class Driver
{
    public void test()
    {
        Transcript t = new Transcript ();
        t.addCourse("CS200", 100);
    }
}

Не совсем понятно, для чего предназначен Driver, но он не может содержать утверждения только в таком классе.

...