为啥我不能在 main 方法中调用私有变量?

Posted

技术标签:

【中文标题】为啥我不能在 main 方法中调用私有变量?【英文标题】:Why can't I call a private variable in main method?为什么我不能在 main 方法中调用私有变量? 【发布时间】:2012-11-18 01:25:29 【问题描述】:

此代码应该在输入对话框中接收全名字符串示例“Billy Bob Smith”,并在消息对话框中将首字母作为字母组合示例“BBS”​​输出。但由于某种原因,main 方法不允许我访问 fullName 变量。

import javax.swing.*;

public class HardMonogram 
     //---------- ATTRIBUTES ----------//
     private String fullName;
     private String monogram;
     private String first;
     private String middle;
     private String last;


     //---------- METHODS ----------//
     public String getInitial(String seperateName) 
           return seperateName.substring(0, 1);
     

     public void getSeperateName(String fullName) 
           first  = fullName.substring(0, fullName.indexOf(" "));
           middle = fullName.substring(fullName.indexOf(" ") + 1, fullName.length());
           last   = middle.substring(middle.indexOf(" ") + 1, middle.length());
           middle = middle.substring(0, middle.indexOf(" "));
     

    public void setMonogram() 
          monogram = getInitial(first)  +
                     getInitial(middle) +
                     getInitial(last);

    JOptionPane.showMessageDialog(null, monogram);
    

    public static void main(String[] args) 
           myMono.fullName = JOptionPane.showInputDialog(null, "Type in you full name");

           HardMonogram myMono = new HardMonogram();
           myMono.getSeperateName(myMono.fullName);
           myMono.setMonogram();

    



给我这个构建错误

/Users/aaron/School/Fall 2012/CSCI-C 201/Labs/LB08/HardMonogram.java:33: error: cannot find symbol
    myMono.fullName = JOptionPane.showInputDialog(null, "Type in you full name");
    ^
symbol:   variable myMono
location: class HardMonogram
1 error
[Finished in 1.2s with exit code 1]

这是我对 java 类的介绍,但我不知道为什么我不能访问该变量。我显然忽略了一些东西。有什么想法吗?

【问题讨论】:

你可以。你有一个不同的问题。查看错误消息。 【参考方案1】:

更新:

再次阅读问题后,您只需要在创建实例后移动 main 方法中的第一行。

       HardMonogram myMono = new HardMonogram();
       myMono.fullName = JOptionPane.showInputDialog(null, "Type in you full name");
       myMono.getSeperateName(myMono.fullName);
       myMono.setMonogram();

【讨论】:

我在 main 方法中创建了 myMono 作为对象?我做错什么了吗?当我注释掉 fullName 调用时,myMono.getseperateName 调用不会给我错误 问题是 main 方法中的第一个语句,您正在尝试分配 myMono.fullName,在创建实例后移至。 是的,bulum 发表了这样的评论我是个白痴,不知道为什么我认为我可以把它放在对象创建之上。谢谢大家! @SavgStorm:是的。祝你好运。不要忘记接受答案。【参考方案2】:

只需在对象声明后加上myMono.fullName = JOptionPane.showInputDialog(null, "Type in you full name"); (HardMonogram myMono = new HardMonogram();)。

【讨论】:

【参考方案3】:

MyMono 尚未在您的 main 方法的第一行中声明。将其添加到开头。

public static void main(String[] args) 
      HardMonogram myMono = new HardMonogram();
      myMono.fullName = JOptionPane.showInputDialog(null, "Type in you full name");
      myMono.getSeperateName(myMono.fullName);
      myMono.setMonogram();


【讨论】:

以上是关于为啥我不能在 main 方法中调用私有变量?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我能够从在同一对象的另一个实例上调用的方法访问一个实例的私有实例变量? [复制]

类的私有变量和私有方法

如果构造函数在私有部分,为啥我们不能创建对象?

为啥我应该在属性访问器中使用私有变量?

为啥我的函数不能访问它所在类的私有变量 INSIDE?

为啥 var_dump 可以确定私有变量的值,但在尝试访问单个属性时却不能