首页 > 解决方案 > 如何将字符串读取为对象?

问题描述

我在 testeAD1 类中调用了时间线(),我在 Amigo 类的列表中发布了用户发布的帖子,我使用了 hasNext,因此对于列表中的每个项目,我想获取 item.posts(其中 .posts 在 Amigo 类中),但是我收到“无法将字符串转换为 Amigo”。我是 Java 的 OOP 新手,这是一个大学项目,请帮忙。

我收到此错误:线程“main”java.lang.Error 中的异常:未解决的编译问题:类型不匹配:无法在 testeAD1.main(testeAD1.java: 117)

import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

class Post{
    
    
    String post;
    public int qntCurtidas;
    
        
    
    Post(String pPost){
        post = pPost;
    }
    
    
}

class Rede {
    
    List<String> usuarios = new ArrayList<String>(); 
    String I;

    
    public void adicionarAmigo(Amigo pNome) {
        usuarios.add(pNome.nome);
    }
    
    
    public void timeline() {
        Iterator<String> it = usuarios.iterator();
        while(it.hasNext()) {
        System.out.println(it.next().posts);
        
        
        }
    }
}


class Amigo {
    
    
    String nome;
    
    List<String> posts = new ArrayList<String>();
    List<String> curtidas = new ArrayList<String>();
    
    
    Amigo(String pNome){
        nome = pNome;       
    }
    
    
    public void postar(Post pPost) {
        posts.add(pPost.post);
    }
    
    public void curtir(Post pPost) {
        curtidas.add(pPost.post);
        pPost.qntCurtidas += 1;
        
    }
    
    

    
}


public class testeAD1{
    public static void main(String[] args) {
            
        Amigo fulano = new Amigo("Fulano");
        Amigo ciclano = new Amigo("Ciclano");
        Amigo beltrano = new Amigo("Beltrano");
        Rede paraiso = new Rede();
        paraiso.adicionarAmigo(fulano);
        paraiso.adicionarAmigo(ciclano);
        paraiso.adicionarAmigo(beltrano);
        Post bomdia = new Post("Bom dia!");
        Post boatarde = new Post("Bom tarde!");
        Post boanoite = new Post("Bom noite!");
        fulano.postar(bomdia);
        fulano.postar(boatarde);
        ciclano.postar(boanoite);
        beltrano.curtir(bomdia);
        beltrano.curtir(boatarde);
        beltrano.curtir(boanoite);
        fulano.curtir(boanoite);
        
        
        /* DEBUG */
        System.out.println(fulano.nome);
        System.out.println(ciclano.nome);
        System.out.println(beltrano.nome);
        System.out.println("USERS IN NETWORK(REDE)");
        System.out.println(paraiso.usuarios);
        System.out.println("POSTS MADE BY USER");
        System.out.println(fulano.posts);
        System.out.println(ciclano.posts);
        System.out.println(beltrano.posts);
        System.out.println("POSTS LIKED BY USER");
        System.out.println(beltrano.curtidas);
        System.out.println(fulano.curtidas);
        System.out.println(ciclano.curtidas);
        System.out.println("NUMBER OF LIKES FOR EACH POST");
        System.out.println(bomdia.qntCurtidas);
        System.out.println(boatarde.qntCurtidas);
        System.out.println(boanoite.qntCurtidas);
        System.out.println("Timeline:");
        paraiso.timeline();
    }
}

标签: javaoop

解决方案


您需要如下修改您的类。否则,不需要 Post 和 Amigo 类。您需要将 Post 存储在 List 中,而不是存储 String。Amigo 也一样。

您的类需要更多修改才能实现实际的 oop 行为。

class Post {

    String post;
    public int qntCurtidas;

    Post(String pPost) {
        post = pPost;
    }

}

class Rede {

    List<Amigo> usuarios = new ArrayList<Amigo>();
    
    String I;

    public void adicionarAmigo(Amigo pNome) {
        usuarios.add(pNome);
    }

    public void timeline() {
        Iterator<Amigo> it = usuarios.iterator();
        while (it.hasNext()) {
            Amigo I = it.next();
            Amigo HA = I;
            System.out.println(HA.posts);
        }
    }
    
}

class Amigo {

    String nome;

    List<Post> posts = null; 
    List<Post> curtidas = null; 

    Amigo(String pNome) {
        nome = pNome;
        posts = new ArrayList<Post>();
        curtidas = new ArrayList<Post>();
    }

    public void postar(Post pPost) {
        posts.add(pPost);
    }

    public void curtir(Post pPost) {
        curtidas.add(pPost);
        pPost.qntCurtidas += 1;

    }
}

推荐阅读