我尝试在这段代码中添加一些对象(servei),新的一个总是覆盖最后一个,我找不到错误:/,我有两个点p和i,我只使用i作为数组当删除llista [p]对象时,因为我不希望我的数组中有空值,我添加了代码,当我使用e时,并且服务因为有些人说也可能有错误。
的System.out.println(llista.afegirServei(SERV)); //这就是我用来添加新服务的方法
public class Llistaservei {
private int i;
private Servei[] llista;
private int p = 0;
private float opinio;
public Llistaservei(int Max_Serv) {
llista = new Servei[Max_Serv];
}
public String AfegirServei(Servei servei) {
if (ValidServei(servei.getNom()) == i) {
return ("El servei ja existeix"); //if exist return that "servei" exist.
} else { ***//finally works cleaning eclipse cache...***
llista[p]=servei;
p++;
return ("El servei s'ha creat correctament");// I add a new "Servei to the array" if doesn't exist
}
}
public String EliminarServei(String nom){
if(ValidServei(nom)==-1){
llista[i]=llista[p]; //here i use 2 pointers p,i cause i don't want null
llista[p]=null; //in the middle of the array
p--;
return ("El servei s'ha eliminat correctament"); //if is valid
} //return "servei" deleted
public int ValidServei(String nom) {
for (i = 0; ((i < p) && (i < llista.length)); i++) {
if (nom.equalsIgnoreCase(llista[i].getNom())) {
return i;
}
}
}
}
答案 0 :(得分:4)
由于ValidServei
返回i
并分享i
,您的方法将始终返回i
与此匹配的值 -
if (ValidServei(servei.getNom())==i){
相反,你可以写一个contains
喜欢,
public boolean contains(String nom) {
for (int i = 0; i < p && i < llista.length; i++) {
if (nom.equalsIgnoreCase(llista[i].getNom())) {
return true;
}
}
return false;
}
Java方法名称按惯例以小写字母开头。像,
public String afegirServei(Servei servei) {
if (contains(servei.getNom())) {
return ("El servei ja existeix");
}
llista[p++] = servei;
return ("El servei s'ha creat correctament");
}
最后,您可能应该使用Set<Servei>
集合(而不是数组),例如
Set<Servei> set = new HashSet<>();
set.add(servei);
答案 1 :(得分:0)
我无法编辑,所以这是翻译后的代码。 这只是社区能够阅读 你的问题,因为你似乎没有在问题中改变你的代码。
public class ServiceList {
private int i;
private Service[] list;
private int p = 0;
private float opinion;
public ServiceList(int maxServer)
{
list = new Service[maxServer];
}
public String addService(Service service){
if(chooseService(service.getName()) == i){
return("The service already exists");
}
else
{
list[p]=service;
p++;
return("The service was successfully created");
}
public int chooseService(String name){
for(i=0; ((i<p) && (i<list.length)); i++){
if(name.equalsIgnoreCase(list[i].getname())){
return i;
}
答案 2 :(得分:0)
我猜是这样的,考虑到缺少某些}
并且i
中的AfegirServei
的值缺失了,你就会削减你的源代码并放入你认为的那个有必要了解这个问题。当您致电servei
时,我很确定问题出在参数public String AfegirServei(Servei servei)
中。你很可能传递了错误的对象或类似的东西。当然,我可以确定只看到完整的源代码。