我创建了一个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());
}
}
}
}
答案 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());
}
}
希望有所帮助。