各位务实的程序员,您好,我开发了这个程序,它是一个用Java编写的社交网络程序,该程序的主要功能是允许用户:添加朋友,删除朋友,查看谁拥有最多的朋友,查看具有最高影响力并有能力退出该计划的人。

就像任何程序一样,都会出现一两个斑点,对我来说,这是Java运行时异常的一种情况,在我尝试通过不使用主程序包就可以解决该问题或是否尝试执行以下操作来解决该问题后,这种情况会不断发生更改我编写程序的方式无济于事。

这是不断出现的错误消息:

Select:
[1] Add Friend
[2] Delete Friend
[3] List Friends
[4] Friends of Friends
[5] Most Popular
[6] Most Influencer
[7] Exit
7
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: uelbook.Person
    at uelbook.UELbook.main(UELbook.java:20)


我的主要课程的第20行是UELbook,下面是:

 Person listfriends=new Person();


UELbook:

package uelbook;
import java.util.*;
import java.io.*;

public class UELbook {

    public static void main(String[] args) {
        UELbook uelbook = new UELbook();
        //test your code here
                Scanner scanner=new Scanner(System.in);
                System.out.println("Select:");
                System.out.println("[1] Add Friend");
                System.out.println("[2] Delete Friend");
                System.out.println("[3] List Friends");
                System.out.println("[4] Friends of Friends");
                System.out.println("[5] Most Popular");
                System.out.println("[6] Most Influencer");
                System.out.println("[7] Exit");
               int choice=scanner.nextInt();
               Person listfriends=new Person();
                while(choice!=7){
                 int num=0;

                //ADD
                if(choice==1){
                System.out.println("ID: ");
                String id=scanner.nextLine();
                System.out.println("Username: ");
                String username=scanner.nextLine();
                System.out.println("Password: ");
                String password=scanner.nextLine();
                listfriends.set(id, username, password);
                listfriends.addFriend();
                }
                //DELETE
                if(choice==2){
                System.out.println("ID: ");
                String id=scanner.nextLine();
                System.out.println("Username: ");
                String username=scanner.nextLine();
                System.out.println("Password: ");
                String password=scanner.nextLine();
                listfriends.set(id, username, password);
                listfriends.removeFriend();
                }
                //LIST
                if(choice==3){
                    for(int i=0;i<1;i++){
                    System.out.println(listfriends.list);
                    }
                }

                System.out.println("ID: ");
                String id=scanner.nextLine();
                System.out.println("Username: ");
                String username=scanner.nextLine();
                System.out.println("Password: ");
                String password=scanner.nextLine();

                //REMOVE
                if(choice==7){
                System.exit(0);
                }

                if(choice==8){
                    System.out.println("ERROR! Please choose from the options.");
                }

                }//WHILE LOOP EXIT
    }
    public void addPerson(String id, String firstname, String lastname) throws PersonExistsException {
        //list.add(ID);
               // list.add(firstname);
                //list.add(lastname);
    }
    public String getPerson(String id) throws NoSuchCodeException {
        return id;
    }
    public void addFriendship(String id1, String id2) throws NoSuchCodeException {
            id1=id1;
            id2=id2;
    }
    public Collection<String> listFriends(String id) throws NoSuchCodeException {
        return null;
    }
    public Collection<String> friendsOfFriends(String id) throws NoSuchCodeException {
        return null;
    }
    //The methods returns true if the file has been loaded,
    //false in case of any errors
    public boolean loadFile(String file) {
        return false; // remove this in the implementation
    }
    //The methods returns true if the file has been saved,
    //false in case of any errors
    public boolean saveFile(String file) {
        return false; // remove this in the implementation
    }
    public String mostPopular() {
        return null; // remove this in the implementation
    }
    public String mostInfluencer() {
        return null; // remove this in the implementation
    }
}


人:

package UELbook;

import java.util.*;
import java.io.*;

public class Person {

    String ID;
    String firstname;
    String lastname;
    ArrayList<String>list=new ArrayList<String>();

    public static void main(String[]args){

    }

    //CONSTRUCTOR
    public void set(String ID, String firstname, String lastname){
        setID(ID);
        setFirstName(firstname);
        setLastName(lastname);
    }

    //SETTERS
    public void setID(String ID){
        ID=ID;
    }

    public void setFirstName(String FirstName){
       firstname=FirstName;
    }

    public void setLastName(String LastName){
        lastname=LastName;
    }

    //GETTERS
    public String getID(){
        return ID;
    }

    public String getFirstName(){
        return firstname;
    }

    public String getLastName(){
        return lastname;
    }

     public void addPerson(String id, String firstname, String lastname) throws uelbook.PersonExistsException {
        list.add(ID);
                list.add(firstname);
                list.add(lastname);
    }

}


人员存在例外:

package uelbook;

@SuppressWarnings("serial")
public class PersonExistsException extends Exception {

}


没有这样的代码异常:

package uelbook;

@SuppressWarnings("serial")
public class NoSuchCodeException extends Exception {

}


任何有用的提示将不胜感激。

最佳答案

您的Person类正在使用包UELbook。

大概应该是uelbook。



(已更新以提供解释。。。)

只是惯例(尽管遵循99.99%的时间),程序包名称应全部小写。 Oracle states the following作为其原因:


  软件包名称以小写形式编写,以避免与
  类或接口的名称。


在OP中的代码中有:


名为UELbook的软件包
另一个名为uelbook的软件包
名为UELbook的类


因此,您将在类UELbook和程序包UELbook之间发生冲突。从技术角度来看,将软件包名称UELbook更改为uelbook应该可以解决您的问题。但是,作为一个相关问题,此后,您应该更改软件包uelbook或类UELbook的名称,以消除所有歧义。

10-07 15:46