Java 加入“;“人气”;在字符串中有重复项(字符串包含名称)

Java 加入“;“人气”;在字符串中有重复项(字符串包含名称),java,Java,很难弄清楚怎么做。我写了10个不同的东西,花了8个小时来写,但还没有弄清楚如何让它发挥作用。我想用这个程序做的是得到一个关于人的名字、朋友的名字、人的年龄、朋友的年龄和人的受欢迎程度(所有这些都来自一个.txt文件,每一行是:Michelle,12/20/2008,Camilla)。我已经获得了要正确输出的人员姓名、要正确输出的人员年龄和要正确输出的人员朋友。但在人气和交友方面有困难的人年龄和感兴趣的人年龄相仿 我需要帮助的是: 1.人气点数相加,并在personOfInterest每次出现在n

很难弄清楚怎么做。我写了10个不同的东西,花了8个小时来写,但还没有弄清楚如何让它发挥作用。我想用这个程序做的是得到一个关于人的名字、朋友的名字、人的年龄、朋友的年龄和人的受欢迎程度(所有这些都来自一个.txt文件,每一行是:Michelle,12/20/2008,Camilla)。我已经获得了要正确输出的人员姓名、要正确输出的人员年龄和要正确输出的人员朋友。但在人气和交友方面有困难的人年龄和感兴趣的人年龄相仿

我需要帮助的是:

1.人气点数相加,并在personOfInterest每次出现在name数组中时返回。在每个人的每个人气都得到0之后,随着人气的增加,我返回并调试了它。我发现它并没有给回报增加任何东西,我尝试了很多不同的方法,但仍然无法找到答案

2.如果用户朋友是已找到年龄的personOfInterest,则将personOfInterest名称设置为要用作朋友的特定年龄。(txt字段中的所有personOfInterest名称都是Someone朋友)

我相信我的代码看起来有点凌乱,开始往回走,把我认为会有用的东西放在一起

人员类别:

import java.util.ArrayList;

public class Person {
    public String personsName;
    public String personsFriend;
    public String personsBirthday;
    public int personsPopularity;
    public int popularity = 0;
    public ArrayList<String> friends = new ArrayList<>();


    public Person(String aName, String aFriend, String aBirthday) {
        personsName = aName;
        personsFriend = aFriend;
        friends.add(personsFriend);
        personsBirthday = aBirthday;
    }

    public String getName() {
        return personsName;
    }

    public String getFriendsName() {
        return personsFriend;
    }

    public String getBirthday() {
        return personsBirthday;
    }

    public void getPopularityNumber(){
    for(int i = 0; i < friends.size(); i++){
        if (personsName.equals(friends.get(i))){
            popularity = 1 + popularity;
        }
        else
        popularity = popularity;
    }
System.out.println(popularity);
}

    public String getFriend() {
        return personsFriend;
    }

    public int getAge() {
        int MONTH = 0;
        int DAY = 0;
        int YEAR = 0;

        for (int i = 0; i < 3; i++) {
            String[] dates = personsBirthday.split("/");
            String month = dates[0];
            String day = dates[1];
            String year = dates[2];
            MONTH = Integer.parseInt(month);
            DAY = Integer.parseInt(day);
            YEAR = Integer.parseInt(year);
        }

        int age = (2014 - YEAR);
        int moAge = (5 - MONTH);
        if (moAge < 0) {
            age--;
        }
        return age;

    }
}
import java.util.ArrayList;
公共阶层人士{
公共字符串personname;
公众人物朋友;
公众弦人生日;
大众化;
公众支持率=0;
public ArrayList friends=new ArrayList();
公众人物(字符串aName、字符串Affriend、字符串aBirthday){
PersonName=aName;
PersonFriend=朋友;
添加(PersonFriend);
个人生日=生日;
}
公共字符串getName(){
返回人名;
}
公共字符串getFriendsName(){
回报朋友;
}
公共字符串getbirth(){
还人生日;
}
public void getPopularityNumber(){
对于(int i=0;i
主文件:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.ArrayList;

public class PersonTester {
    public static void main(String[] args) throws FileNotFoundException {

        //Get that file and start the scan on that broseph
        File inputFile = new File("friends_data.txt");
        Scanner in = new Scanner(inputFile);

        //Set up an array for our Person objects
        final int SIZE = 5;
        Person[] personsOfInterest = new Person[SIZE];
        String[] friends = new String[5];

        //Lets get this i declared as 0 for our array!
        int i = 0;
        int popularity = 0;

        String person;

        while (in.hasNextLine()) {
            String line = in.nextLine();
            String[] nameBirthdayname = line.split(", ");

            person = nameBirthdayname[0];
            String birthday = nameBirthdayname[1];
            String friend = nameBirthdayname[2];
            friends[i] = friend;
            personsOfInterest[i] = new Person(person, friend, birthday);

            i++;
        }

        for (i = 0; i < SIZE; i++) {
            System.out.println("");
            System.out.println("New Person");
            System.out.println("--------------------------------------------------------");
            System.out.println("Persons Name : " + personsOfInterest[i].getName());
            System.out.println("Popularity : " + personsOfInterest[i].getPopularityNumber());
            System.out.println("Their age on May 1, 2014 : " + personsOfInterest[i].getAge());
            System.out.println("Persons Best Friend : " + personsOfInterest[i].getFriend());
            System.out.println("Best Friends Age on May 1,2014 : " + personsOfInterest[i].getName());
            System.out.println("--------------------------------------------------------");

        }
    }

}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
导入java.util.ArrayList;
公共类个人{
公共静态void main(字符串[]args)引发FileNotFoundException{
//拿到那个文件,开始扫描那个兄弟
File inputFile=新文件(“friends_data.txt”);
扫描仪输入=新扫描仪(输入文件);
//为我们的Person对象设置一个数组
最终整数大小=5;
Person[]personsOfInterest=新人[人数];
String[]friends=新字符串[5];
//让我们得到我声明为0的数组!
int i=0;
int=0;
线人;
while(在.hasNextLine()中){
String line=in.nextLine();
字符串[]namebirchdayname=line.split(“,”);
person=name生日姓名[0];
字符串birthday=name birthdayname[1];
字符串friend=name生日名称[2];
朋友[我]=朋友;
personsOfInterest[i]=新人(人、朋友、生日);
i++;
}
对于(i=0;i
还尝试了getPopularityNumber方法:

public void getPopularityNumber(String[] friends) {
    for (int i = 0; i < 5; i++) {
        if (personsName.equals(friends[i])) {
            popularity = 1 + popularity;
        } else
            popularity = popularity;
    }
    System.out.println(popularity);

}
public void getPopularityNumber(字符串[]朋友){
对于(int i=0;i<5;i++){
if(personName.equals(friends[i])){
人气=1+人气;
}否则
受欢迎程度=受欢迎程度;
}
System.out.println(流行度);
}

任何帮助都将不胜感激

您的代码将无法编译。没有声明args的getPopularityNumber()是不存在的。是的,返回并在它将编译的地方执行了它,但给了我一个错误的答案(流行度:0),因为出于某种原因,它没有将好友名称添加到arraylist。很抱歉,我看到了许多缺陷。在getPopularity方法中,您循环浏览一个人的朋友列表,并在每次朋友的名字等于persons name时增加人气,否则使用其旧值写入人气。但是在您的friends_数据文件中,没有人有同名的朋友,因此它自然会输出0。另一方面,根据构造函数的逻辑,一个人的friends ArrayList始终只包含
public void getPopularityNumber(String[] friends) {
    for (int i = 0; i < 5; i++) {
        if (personsName.equals(friends[i])) {
            popularity = 1 + popularity;
        } else
            popularity = popularity;
    }
    System.out.println(popularity);

}