当前位置: 首页 > 知识库问答 >
问题:

无法更改Java对象中的方法变量

盖成弘
2023-03-14

我在更改联系人对象中的变量值时遇到问题。我正在尝试制作一个联系人列表,但我无法更改变量trach方法的值。我有editTouch方法调用change eName方法,这两个方法都传递了ArrayList对象trach引用,所以它不应该在main方法中更改值trach ArrayList时出现问题,但问题是当我想更改对象的名称时它不会更改它。我这里缺少什么吗?

package telefonski_imenik;

public class Contact {
protected String name;
protected String lastname;
protected String number;

public Contact(String name, String lastname, String number) {
    setName(name);
    setLastName(lastname);
    setNumber(number);
}

public void setName(String name) {
    this.name = name;
}

public void setLastName(String lastname) {
    this.lastname = lastname;
}

public void setNumber(String number) {
    this.number = number;
}

public String getName() {
    return this.name;
}

public String getLastName() {
    return this.lastname;
}

public String getNumber() {
    return this.number;
}
}



package telefonski_imenik;
import java.util.ArrayList;
import java.util.Scanner;



 public class TelefonskiImenik {

public static void createContact(String ime, String prezime, String broj, ArrayList<Contact> 
 ContactList) {
    Contact noviKontakt = new Contact(ime, prezime, broj);
    ContactList.add(noviKontakt);
}

public static void editContact(ArrayList<Contact> ContactList) {
    
    System.out.println("Unesite nove podatke");
    changeName(ContactList);
    
    
}

public static void changeName(ArrayList<Contact> ContactList) {
    
    Scanner novinput = new Scanner(System.in);
    System.out.println("Unesite staro ime");
    String oldName = novinput.nextLine();
    System.out.println("Unesite novo ime");
    String newName = novinput.nextLine();
    
    for (int i = 0; i < ContactList.size(); i++) {
        if (ContactList.get(i).equals(oldName)) {
            ContactList.get(i).setName(newName);
        }
    }
    
    novinput.close();
}



public static void main(String[] args) {
    
    
    ArrayList<Contact> ContactList = new ArrayList<Contact>();
    
    Scanner input = new Scanner(System.in);
    
    System.out.println("Unesite podatke");
    String name = input.nextLine();
    String lastname = input.nextLine();
    String number= input.nextLine();
    
    createContact(name, lastname, number, ContactList);
    
    
    
    for (int i = 0; i < ContactList.size(); i++) {
        System.out.println(ContactList.get(i).getName());
        System.out.println(ContactList.get(i).getLastName());
        System.out.println(ContactList.get(i).getNumber());
    }
    
    
    editContact(ContactList);
    
    for (int i = 0; i < ContactList.size(); i++) {
        System.out.println(ContactList.get(i).getName());
        System.out.println(ContactList.get(i).getLastName());
        System.out.println(ContactList.get(i).getNumber());
    }
    
    input.close();
}

}

共有1个答案

宗政唯
2023-03-14

您忘记获取循环中对象的名称:

for (int i = 0; i < ContactList.size(); i++) {
        if (ContactList.get(i).equals(oldName)) {
            ContactList.get(i).setName(newName);
        }
    }
ContactList.get(i).getName().equals(oldName)
 类似资料:
  • 问题内容: 我有一个像这样的功能: 在功能结束时, elemR 被更改,但是从main方法调用函数后,参数 elemR 仍具有与函数调用之前相同的值。有什么问题?如何在调用函数后更改此ListElement并“保存”此更改,而无需将返回类型更改为ListElement(我也需要整数返回值)? 问题答案: Java函数参数通过引用名称进行调用,这意味着当您将一个对象作为函数参数放置时,JVM将引用的

  • 本文向大家介绍JavaScript更改原始对象valueOf的方法,包括了JavaScript更改原始对象valueOf的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript更改原始对象valueOf的方法。分享给大家供大家参考。具体分析如下: JS中的对象都包含valueOf方法,我们可以通过自定义valueOf函数替换掉原始object的valueOf 希望本文所述

  • 我试图在我的程序中实现加密,但在方法上遇到了一些困难。我有一个未加密的数组,它应该保持未加密,另一个数组我想加密。然而,当我调用这个方法时,它会加密两个数组。 我无法发现问题,因为在我的理解中,我返回加密数据并将其分配给另一个数组,但由于某种原因,我传递的数组也发生了变化。 这是输出 提前感谢您的帮助!

  • 我的JavaScript对象的状态声明如下: 我有一个方法changeState(),它基本上执行以下操作: 然而,这将给我一个错误,即“setState”不是一个函数。如何从方法中更改此标志? 编辑:我不知道如何正确绑定。SOF一允许我就接受解决方案

  • 目录类 驱动程序类

  • 假设我制作了一个简单的图形应用程序。它有两个类,一个是主类,另一个是扩展JPanel的名为“panel”的类。主类只是一个包含JPanel的JFrame。其内容如下: 第二个类使用Graphics2D来创建JPanel的内容。它也有一些变量,这些变量在油漆组件()方法中被更改。以下是它的内容: 然而,这里的问题是:在执行了油漆组件()方法后,和都不会改变。尽管油漆组件()方法绘制了它的矩形,但主方