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