You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java报错:未声明变量getMembers,子类已定义相关方法仍报错的问题排查与用户输入修改实现方案

问题分析与解决

首先看你遇到的Undeclared variable: getMembers错误,这是个典型的语法问题:

  • 在Main类的最后一行JOptionPane.showMessageDialog(null,if2.getMembers);里,getMembers是方法,不是变量,调用方法必须加括号,也就是要写成if2.getMembers()。编译器看到你没加括号,会把它当成一个变量名,但你从未定义过叫getMembers的变量,所以直接报错。

除此之外,你的代码还有两处逻辑问题:

  • Main里声明了int members;但未初始化,直接调用if2.setMembers(members);的话,这个members是默认值0,完全没用上用户输入的amount值。
  • 你已经通过构造方法IdeellForening if2=new IdeellForening(namn, adress, amount);把用户输入的amount传给了成员变量,之后又调用setMembers传一个未初始化的变量,这不仅多余,还会覆盖掉正确的用户输入。

修正后的Main类代码

// 假设namn和adress已提前定义好
String namn = "示例协会";
String adress = "示例街道123号";

// 第一步:获取用户初始输入的成员数量
String sR4 = JOptionPane.showInputDialog(null, "How many members?", JOptionPane.QUESTION_MESSAGE);
int amount = Integer.parseInt(sR4);

// 用用户输入初始化对象
IdeellForening if2 = new IdeellForening(namn, adress, amount);

// 第二步:实现用户修改输入的功能
String newMemberInput = JOptionPane.showInputDialog(null, "请输入修改后的成员数量:", JOptionPane.QUESTION_MESSAGE);
int newMembers = Integer.parseInt(newMemberInput);
if2.setMembers(newMembers); // 调用set方法更新成员数

// 正确调用get方法获取最新值并显示
JOptionPane.showMessageDialog(null, "当前成员数量为: " + if2.getMembers());

子类IdeellForening的优化建议

你的子类里重复定义了namn和adress变量,但这些变量应该已经在父类Forening中定义了,没必要重复声明——否则会覆盖父类的变量,导致super.toString()无法正确读取这些值。修改后的子类代码:

public class IdeellForening extends Forening { 
    private int members; 

    public IdeellForening(String namn, String adress, int members) { 
        super(namn, adress); 
        this.members = members; 
    } 

    // 如果registreringsar是父类变量,需通过super初始化
    public IdeellForening(String namn, int members) { 
        super(namn); // 假设父类有对应的构造方法
        this.members = members; 
    } 

    public void setMembers(int members) { 
        this.members = members; 
    } 

    public int getMembers() { 
        return members; 
    } 

    public String toString() { 
        // 调用父类的get方法获取adress(需父类提供对应getter)
        return "Antalet medlemmar är: " + members + " och adress: " + super.getAdress() + " " + super.toString(); 
    } 
}

完整的用户修改流程说明

按照你的需求,完整逻辑应该是:

  1. 弹出对话框获取用户初始输入的成员数量
  2. 用该值初始化IdeellForening对象
  3. 弹出第二个对话框让用户输入修改后的数量
  4. 调用setMembers方法更新对象的成员数值
  5. 调用getMembers方法获取最新值并弹窗展示

上面的修正代码已经包含了这个完整流程,你可以根据实际需求调整对话框的提示文案。

内容的提问来源于stack exchange,提问作者BananaSweden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:27:36