Java-如何从列表中打印特定数组?

时间:2016-06-23 01:40:49

标签: java arrays arraylist

我创建了一个arraylist,在我用扫描仪输入一个名字后,我想搜索名称是否等于getName,然后用voce.get(i).toString()打印整个数组。

像搜索罗伯特一样,它会搜索所有的arraylist,并且当找到一个getName,它等于robert print al array。

抱歉我的英文不好

public class Item {
private String nome,indirizzo,cellulare;

public Item(String nome, String indirizzo, String cellulare){
    this.nome = nome;
    this.indirizzo = indirizzo;
    this.cellulare = cellulare;
}

public String toString(){
    return this.getNome() + this.getIndirizzo() + this.getCellulare();
}

public String getNome() {
    if(!this.nome.isEmpty()){
        return this.nome;
    }
    else{
        return "Sconosciuto";
    }
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getIndirizzo() {
    if(!this.indirizzo.isEmpty()){
        return this.indirizzo;
    }
    else {
        return "Sconosciuto";
    }
}

public void setIndirizzo(String indirizzo) {
    this.indirizzo = indirizzo;
}

public String getCellulare() {
    if(!this.cellulare.isEmpty()){
        return this.cellulare;
    }
    else {
        return "Sconosciuto";
    }
}

public void setCellulare(String cellulare) {
    this.cellulare = cellulare;
}
  }

MAIN:

import java.util.*;



public class AggPersone {
public static void main(String[] args) {


    ArrayList<Item> voce = new ArrayList<Item>();

    voce.add(new Item("Robert", "Via qualcosa", "123"));
    voce.add(new Item("Roberto","Via qualcosina", "123"));

    Scanner input = new Scanner(System.in);
    System.out.println("chi cerchi?");
    String chiave = input.nextLine();


    for(int i = 0; i < voce.size(); i++){
        if(chiave.equals(getNome){ <---- doesn't work, how to ispect getNome?
            System.out.println(voce.get(i).toString());
        }
    }

}
  }

4 个答案:

答案 0 :(得分:1)

如果我理解正确的话,我想你正试图看看是否在arraylist'voce'中找到了Scanner的输入。

你需要遍历'voce'直到看到'chiave'。

for(Item item: voce) {
    if(item.getNome().equals(chiave) {
         System.out.println("Found: " + item.getNome());         
    }
}

答案 1 :(得分:0)

您想要将每个Item的{​​{1}}属性与输入字符串进行比较 - 尝试在您提到的行中使用nome

答案 2 :(得分:0)

您需要从Item对象调用getNome()方法,如下所示:

from itertools import groupby

out_filename = '/tmp/f{}.txt'
lines_per_file = 50000

with open('infile.txt') as infile:
    for file_number, lines in groupby(enumerate(infile), key=lambda x: x[0] // lines_per_file):
        with open(out_filename.format(file_number), 'w') as outfile:
            outfile.writelines(line for line_number, line in lines)

答案 3 :(得分:0)

您正在尝试使用项目类中的 - getNome()方法而不创建此类的对象。因此它甚至没有编译。

将您的上一个循环更改为以下 -

for(int i = 0; i < voce.size(); i++){
                if(chiave.equals(voce.get(i).getNome())){ //<---- doesn't work, how to ispect getNome?
                    System.out.println(voce.get(i).toString());
                }
            }

希望有所帮助。