Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每次java调用时都会覆盖数组值_Java_Arrays_Overwrite - Fatal编程技术网

每次java调用时都会覆盖数组值

每次java调用时都会覆盖数组值,java,arrays,overwrite,Java,Arrays,Overwrite,我试图在这段代码中添加一些对象(servei),新的对象总是覆盖上一个对象,我找不到错误:/,我有两个点p和i,我只在删除llista[p]对象时使用i作为数组,因为我不希望数组中出现空值,我添加了代码,当我使用e时,因为有些人说也可能有错误 System.out.println(llista.afegirservi(serv));//这就是我用来添加新服务的地方 public class Llistaservei { private int i; private Servei[

我试图在这段代码中添加一些对象(servei),新的对象总是覆盖上一个对象,我找不到错误:/,我有两个点p和i,我只在删除llista[p]对象时使用i作为数组,因为我不希望数组中出现空值,我添加了代码,当我使用e时,因为有些人说也可能有错误

System.out.println(llista.afegirservi(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;
            }
        }
    }

}
公共类Listaservei{
私人互联网i;
私人服务【】利斯塔;
私有int p=0;
私人意见;
公共服务(国际最大服务){
llista=新服务[最大服务];
}
公共字符串AfegirServei(Servei-Servei){
if(ValidServei(servei.getNom())==i){
return(“El servei ja existiex”);//如果存在,则返回“servei”存在。
}否则{***//最终可以清理eclipse缓存***
llista[p]=servei;
p++;
return(“El servei s'ha create correcament”);//如果不存在,我会添加一个新的“servei to the array”
}
}
公共字符串EliminarServei(字符串名称){
如果(有效服务(nom)=-1){
llista[i]=llista[p];//这里我使用两个指针p,因为我不希望为null
llista[p]=null;//位于数组中间
p--;
返回(“El servei s'ha消除更正”);//如果有效
}//返回已删除的“servei”
public int ValidServei(字符串名称){
对于(i=0;((i
由于
ValidServei
返回
i
并共享
i
您的方法将始终返回一个与
i
匹配的值-

if (ValidServei(servei.getNom())==i){
相反,您可以编写一个包含

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;
}
最后,您可能应该使用集合(而不是数组),如

Set Set=newhashset();
set.add(servei);

我无法编辑,因此这里是翻译后的代码。 这只是为了让社区能够阅读 您的问题,因为您似乎没有更改问题中的代码

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;
        }
公共类服务列表{
私人互联网i;
私人服务[]名单;
私有int p=0;
私人意见;
公共服务列表(int maxServer)
{
列表=新服务[maxServer];
}
公共字符串addService(服务服务){
if(选择服务(service.getName())==i){
返回(“服务已存在”);
}
其他的
{
列表[p]=服务;
p++;
return(“服务已成功创建”);
}   
公共int-chooseService(字符串名称){

对于(i=0;((i考虑到缺少一些
),我猜是这样的)
并且
AfegirServei
中的
i
的值丢失,您将剪切源代码并放入您认为理解问题所必需的内容。我很确定,当您调用
公共字符串AfegirServei(servei servei)时,问题出在参数
servei
。很可能你传递了错误的对象或类似的东西。当然,我只能确定我看到了完整的源代码。

外语的诅咒:我看不懂你的代码,因此猜不出你想做什么。你必须告诉我们。你能先更正你的代码吗。变量I的使用似乎有点混乱p、
p
是递增的吗?我通常喜欢在构造函数中赋值。p是递增的,问题是数组总是空的,我在转到ValidServei时添加值。我认为这更适合作为对原始问题的编辑。你是对的,这也是我的第一个想法。但是“太长295个字符”.因为它不会伤害任何人,也不会提高问题的可读性,所以我认为没问题。我不知道编辑原始问题的长度限制。很有趣。在这种情况下,我完全同意。我以前尝试过布尔运算,但这是一个大学项目,所以我不能使用它(老师说有附带的问题或类似的问题),并且不能使用集合甚至arraylist,这让我有点复杂…最后使用了我上次编辑的解决方案,谢谢你,反正我使用eclipse,所以缺少}这不是问题……而且Servei代码已经给出并实现了,顺便说一下,真正的问题是,当我添加“Servei”时,它每次都会覆盖最后一个,因此我在数组中始终有1个值,并插入了更多的值。最后,与我上次编辑的解决方案一起工作,谢谢
Set<Servei> set = new HashSet<>();
set.add(servei);
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;
        }