Java在操作事件侦听器中非法启动表达式
我开始学习Java,并尝试创建一个前十名列表。我不断得到表达式和“;”的非法开头第78、110和118号线的预期值 78:公共插入(字符串名称,整数分数) 110:公共布尔值isOnList(字符串第一,字符串第二) 118:公共字符串toString() 如果我使它成为一个不是动作事件监听器的类,那么这段代码将编译,但是如果它是一个事件监听器,那么我会得到这些错误。我们将非常感谢您对本代码的任何帮助Java在操作事件侦听器中非法启动表达式,java,actionlistener,actionevent,Java,Actionlistener,Actionevent,我开始学习Java,并尝试创建一个前十名列表。我不断得到表达式和“;”的非法开头第78、110和118号线的预期值 78:公共插入(字符串名称,整数分数) 110:公共布尔值isOnList(字符串第一,字符串第二) 118:公共字符串toString() 如果我使它成为一个不是动作事件监听器的类,那么这段代码将编译,但是如果它是一个事件监听器,那么我会得到这些错误。我们将非常感谢您对本代码的任何帮助 import java.awt.*; import java.awt.event.*; imp
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;
}
}
}
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入javax.swing.JList;
导入java.util.*;
导入java.util.Scanner;
导入java.util.LinkedList;
公共类TopTenList扩展了JFrame
{
私人TopTenList tt;
私有区域列表视图;
私有JTextField名称;
私人JTextField评分;
私人LinkedList分数;
私有JButton enterButton;
//这是GUI窗口的代码
公共TopTenList()
{
listView=新的JTextArea();
name=新的JTextField();
分数=新的JTextField();
//将文本区域放在框架的中心
添加(列表视图);
listView.setEditable(false);
listView.setBackground(颜色:白色);
//为“名称”和“分数”文本字段创建面板和标签
JPanel名称面板=新JPanel(新网格布局(2,2));
添加(新的JLabel(“输入用户名:”);
名称面板。添加(名称);
添加(新JLabel(“输入新分数”);
名称面板。添加(分数);
添加(名称面板,边框布局。北);
//创建输入分数按钮
enterButton=新的JButton(“回车”);
添加(enterButton,BorderLayout.SOUTH);
//将操作侦听器添加到按钮
addActionListener(新的enterButtonListener());
//架起架子
setTitle(“前十名得分者”);//窗口标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭时的行为
包装();
setVisible(true);//显示窗口
}
//创建链接列表
公共无效TopTenList()
{
分数=新的LinkedList();
}
//填充列表
私有类enterButtonListener实现ActionLister
{
已执行的公共无效操作(操作事件e)
{
公共插入(字符串名称,整数分数)
{
字符串newScore=name+“”+score.toString();
if(scores.isEmpty())
{
添加(新闻核心);
返回;
}
对于(int i=0;i10)
{
分数。删除(10);
}
}
//评估分数表上的位置的方法
公共布尔值isOnList(字符串第一,字符串第二)
{
整数firstScore=Integer.parseInt(first.substring(first.lastIndexOf(“”)+1));
Integer secondScore=Integer.parseInt(second.substring(second.lastIndexOf(“”)+1));
返回firstScore>secondScore;
}
//列出要显示的列表
公共字符串toString()
{
字符串scoreList=“”;
对于(int i=0;i
这种语法在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()
{...}
你正在定义方法和方法体中的构造函数之类的东西。这是不允许的。请重新阅读教程。代码太多了……你能把它缩小到显示错误的几行吗?谢谢-这是我遗漏的部分,我一次尝试做的太多了。因为我真正想要执行的操作是插入我需要找出如何重写它,以便在LinkedListy的侦听器中工作,这有帮助-代码现在将编译。但是,当它运行时,会出现一个AWT-EVENTQueue-Q java.lang.NullPointerException,并且该行仍然引用插入方法。关于如何修复这个问题,有什么想法吗?这里没有足够的信息我的第一个想法是,insert(name,score)可能会使用空分数调用,并且在insert函数的第一行中的语句score.toString()上会出现一个NullPointerException,但如果没有看到调用代码,我无法确定。
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()
{...}