Недопустимое начало выражения Java в прослушивателе событий действия

Я начинаю Java, и я пытаюсь создать список из десяти лучших. Я продолжаю получать недопустимое начало выражения и ';' ожидается для линий 78, 110 и 118.

78: общедоступная вставка (имя строки, целочисленная оценка) 110: общедоступный логический isOnList (сначала строка, затем строка) 118: общедоступная строка toString()

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

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JList;
import java.util.*;
import java.util.Scanner;
import java.util.LinkedList;

public class TopTenList extends JFrame
{
private TopTenList tt;
private JTextArea listView;
private JTextField name;
private JTextField score;
private LinkedList<String> scores;
private JButton enterButton;



// This is the code for the GUI Window
public TopTenList()
{
    listView = new JTextArea();
    name = new JTextField();
    score = new JTextField();

    // Put the textArea in the center of the frame
    add(listView);
    listView.setEditable(false);
    listView.setBackground(Color.WHITE);


    //Create panel and label for the Name and score text fields
    JPanel namePanel = new JPanel(new GridLayout(2,2));
    namePanel.add(new JLabel ("Enter User Name: "));
    namePanel.add(name);
    namePanel.add(new JLabel ("Enter New Score: "));
    namePanel.add(score);
    add(namePanel, BorderLayout.NORTH);

    //Create Enter score button
    enterButton = new JButton ("Enter");
    add(enterButton, BorderLayout.SOUTH);

    //Add action listener to the button
    enterButton.addActionListener(new enterButtonListener());



    // Set up the frame
    setTitle("Top Ten Scoreholders");  // Window Title
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Behavior on close
    pack();
    setVisible(true);  // Display the window

   }

    // Create the Linked List
   public void TopTenList()
   {
       scores = new LinkedList<String>();
   }

   // Populate the list
   private class enterButtonListener implements ActionLister
   {

   public void actionPerformed(ActionEvent e)
   {
       public insert(String name, Integer score)
        {
            String newScore = name + " "+score.toString();

            if(scores.isEmpty())
            {
                scores.add(newScore);
                return;
            }
            for (int i=0; i<=scores.size(); i++)
            {
                if(i==scores.size())
                {
                    scores.add(newScore);
                    break;
                }
                if (isOnList(newScore, scores.get(i)))
                {
                    scores.add(i,newScore);
                    break;
                }
            }

            // Shrink the list to the top ten scores
            while (scores.size()>10)
            {
                scores.remove(10);
            }
        }

       // method to evaluate placement on score list

       public boolean isOnList (String first, String second)
        {
            Integer firstScore = Integer.parseInt(first.substring(first.lastIndexOf(' ')+1));
            Integer secondScore = Integer.parseInt(second.substring(second.lastIndexOf(' ')+1));
            return firstScore > secondScore;
        }

        // make the list for display
        public String toString()
        {
            String scoreList = "";
            for (int i = 0; i <scores.size(); i++)
            {
                scoreList = scoreList + scores.get(i)+"\n";
            }
            return scoreList;
        }
   }
   }

    }

person user3440353    schedule 28.04.2014    source источник
comment
Вы определяете методы и что-то вроде конструктора в теле метода. Это не разрешено. Пожалуйста, перечитайте учебник.   -  person Sotirios Delimanolis    schedule 29.04.2014
comment
Это много кода... Можете ли вы сузить его до нескольких строк, в которых обнаружена ошибка?   -  person Brent Faust    schedule 29.04.2014


Ответы (1)


public void actionPerformed(ActionEvent e)
{
    public insert(String name, Integer score)
    {...}
    public boolean isOnList (String first, String second)
    {...}
    public String toString()
    {...}
}

Этот синтаксис не имеет смысла в java. Вы не можете определить одну функцию внутри другой таким образом. Вы хотите изменить код следующим образом:

public void actionPerformed(ActionEvent e)
{ // handle the ActionEvent here   }

public insert(String name, Integer score)
{...}
public boolean isOnList (String first, String second)
{...}
public String toString()
{...}
person tzimnoch    schedule 28.04.2014
comment
Спасибо - это то, чего мне не хватало, я пытался сделать слишком много одновременно. Поскольку действие, которое я действительно хочу выполнить, - это вставка, мне нужно выяснить, как переписать ее, чтобы она работала внутри прослушивателя для LinkedList. - person user3440353; 29.04.2014
comment
TY, это помогло - теперь код будет компилироваться. Однако при запуске возникает исключение AWT-EVENTQueue-Q java.lang.NullPointerException, и строка по-прежнему ссылается на метод вставки. Любые идеи о том, как это исправить? - person user3440353; 30.04.2014
comment
Здесь недостаточно информации для продолжения. Моя первая мысль заключается в том, что вставка (имя, оценка) может быть вызвана с нулевой оценкой, и вы получите исключение NullPointerException в операторе score.toString() в первой строке функции вставки, но не видя вызывающий код, я могу не сказать точно. - person tzimnoch; 30.04.2014