什么是超类型?

时间:2017-10-24 07:59:37

标签: java

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.*;

//star my method lab
public class Method extends JPanel {

//two array lists that I am going to use.
ArrayList<String> english = new ArrayList<>();
ArrayList<String> french = new ArrayList<>();

    //bring text file as an array
    public void loadEnglishWords() {
        //input my file
        String filename = "english.txt";
        File f = new File(filename);
        try {
            Scanner s = new Scanner(f);
            //scan all array line by line
            while (s.hasNextLine()) {
                String line = s.nextLine();
                english.add(line);
            }
        } catch (FileNotFoundException e) { //wrong file name makes error massage pop up
            String errorMessage = "Wrong!";
            JOptionPane.showMessageDialog(null, errorMessage, "Wrong!",JOptionPane.ERROR_MESSAGE);

        }   
    }

    //same array job with English to compare
    public void loadFrenchWords() {
        String filename = "french.txt";
        File f = new File(filename);
        try {
            Scanner s = new Scanner(f);
            while (s.hasNextLine()) {
                String line = s.nextLine();
                french.add(line);
            }
        } catch (FileNotFoundException e) {
            String errorMessage = "Wrong!";
            JOptionPane.showMessageDialog(null, errorMessage, "Wrong!",JOptionPane.ERROR_MESSAGE);

        }   
    }

    //check each line to parallel my arrays to get to same position
    public String lookup(String word){
        for (int i = 0; i < english.size();i++) {
            if (word.equals(english.get(i))) {
                return french.get(i);
            }
        }
        //wrong values in arrays 
        return "No match found";
    }

    //infinite loop to run my program until get the result
    public void mainLoop() {
        while (true) {
            //pop-up box to ask English words
            String tmp = JOptionPane.showInputDialog("Please Enter an English Word!");
            //store the result in variable r
            String r = lookup(tmp);
            String a;
            //
            if (r == ("No match found")) {
                a = "Write a Right Word!";
            } else {
                a = "The French word is : " + r + ". Play agian?";

            }
            //asking want to play more or not
            int result;
            result = JOptionPane.showConfirmDialog(null,a,"RESULT!",JOptionPane.YES_NO_OPTION);
            //doens't want to play then shut down
            if (result == JOptionPane.NO_OPTION) {
                break;
            }
        }

    }


    //make all things run in order
    @Override
    public void init() {
        loadEnglishWords();
        loadFrenchWords();
        mainLoop(); 
    }
}

//我的问题是,每次编译此程序时,错误信息都是: &#34; Method.java:88:error:方法不会覆盖或实现超类型的方法         @覆盖         ^ 1错误&#34;

//此程序是使用arraylist将法语单词翻译成英语单词 我使用.txt文件作为我的英语和法语单词集,让它通过arraylist进行翻译

//在我的程序中,我需要使用JPanel或弹出框来要求用户输入他们想要翻译的单词

//请注意我是Java的初学者,请有人帮助我并指出我弄错了所以我可以改变它。非常感谢你!

2 个答案:

答案 0 :(得分:0)

错误的含义是,在第88行中,您使用@Override从父类init重新定义名为JPanel的方法。但是因为JPanel就是它(即Java的一部分),它没有init方法,你不能重新定义它,因此错误。最有可能的是,您应该删除@Override,这意味着您要添加新方法而不是重新定义它。

继承是一种机制,您可以根据需要获取现有类并对其进行修改。在您的情况下,您的类名为Method并且它扩展(继承自)JPanel,因此JPanel是您类的超类型。

如果您刚刚开始,请阅读并了解面向对象的概念。有很多教程,包括YouTube videos。快乐学习!

答案 1 :(得分:0)

除了之前提到的内容,您需要更改一些内容:

public void init() {应为public static void main(String args[]) {

然后你需要制作你的方法static,即

public static void loadEnglishWords() {

此外,arrayLists也需要static

另外一件事,你应该与.equals()而不是==

进行比较

我稍微重写了你的代码,现在应该可以了:

static ArrayList<String> english = new ArrayList<>();
    static ArrayList<String> french = new ArrayList<>();

    //bring text file as an array
    public static void loadEnglishWords() {
        //input my file
        try {
            Scanner s = new Scanner(new File("english.txt"));
            //scan all array line by line
            while (s.hasNextLine()) {
                String line = s.next();
                english.add(line);
            }
        } catch (FileNotFoundException e) { //wrong file name makes error massage pop up
            String errorMessage = "Wrong!";
            JOptionPane.showMessageDialog(null, errorMessage, "Wrong!", JOptionPane.ERROR_MESSAGE);
        }
    }

    //same array job with English to compare
    public static void loadFrenchWords() {
        try {
            Scanner s = new Scanner(new File("french.txt"));
            while (s.hasNextLine()) {
                String line = s.nextLine();
                french.add(line);
            }
        } catch (FileNotFoundException e) {
            String errorMessage = "Wrong!";
            JOptionPane.showMessageDialog(null, errorMessage, "Wrong!", JOptionPane.ERROR_MESSAGE);
        }
    }

    //check each line to parallel my arrays to get to same position
    public static String lookup(String word) {
        for (int i = 0; i < english.size(); i++) {
            if (word.equals(english.get(i))) {
                return french.get(i);
            }
        }
        //wrong values in arrays 
        return "No match found";
    }

    //infinite loop to run my program until get the result
    public static void mainLoop() {
        while (true) {
            //pop-up box to ask English words
            String tmp = JOptionPane.showInputDialog("Please Enter an English Word!");
            //store the result in variable r
            String r = lookup(tmp);
            String a;
            //
            if (r.equals("No match found")) {
                a = "Write a Right Word!";
            } else {
                a = "The French word is : " + r + ". Play agian?";
            }
            //asking want to play more or not
            int result;
            result = JOptionPane.showConfirmDialog(null, a, "RESULT!", JOptionPane.YES_NO_OPTION);
            //doens't want to play then shut down
            if (result == JOptionPane.NO_OPTION) {
                break;
            }
        }
    }
    //make all things run in order
    public static void main(String args[]) {
        loadEnglishWords();
        loadFrenchWords();
        mainLoop();
    }
}