【问题标题】:Create instance of object in main function [closed]在主函数中创建对象实例[关闭]
【发布时间】:2020-10-09 06:35:23
【问题描述】:

我应该调用 set 方法来更改我创建的对象的属性,但给了我以下错误:

PrimerPrograma.java:34: error: non-static variable this cannot be
referenced from a static context

我试过的代码是:

    public class PrimerPrograma{

      public class Punto{
         int x;          
         int y;

         public Punto(int lax, int lay){         
            x=lax;
            y=lay;       
         }
    
         public void set(int lax, int lay){                                   
            x=lax;
            y=lay;
         }

        public static void main(String[]args){
           Punto p=new Punto(5,5);
           p.set(8,8);
           System.out.println(p.x+p.y);
        }
    
    }

如何创建 Punto 类的实例,以便调用其方法?

【问题讨论】:

  • 你是怎么把构造函数和p.set放在main方法里的?因为那确实是你应该做的。
  • 首先感谢您的回答,我会写我如何将它放在问题中
  • 你也是这个地方的新手。请花一些时间来了解它是如何工作的。从以下细节开始:使用预览功能确保您的输入全部格式和缩进都很好。而不是只是在没有明确问题描述的情况下向我们丢掉一些代码。
  • 还有一件事:这不是一个讨论板。这个想法是:你问一个精确的问题,你就会得到答案。你确实接受答案,修改你的问题,并让人们帮助你解决下一个遇到的问题。并且:请做研究。你面临着非常基本的问题,这些问题在这个地方被解释了很多次。当您在第一次编码实验中进行反复试验时,这个社区并不是要牵着您的手。
  • 然后:A) 要么将每个类放在自己的文件中,要么 B) 研究如何在同一个文件中有两个类(提示:只有一个可以是公共的)或 C) 使内部类静态......并且:告诉你的教练在他对你们的要求中更加准确。由于有多种方法可以拥有多个类,这显然会导致混乱......

标签: java constructor static


【解决方案1】:

将实例化、设置和系统打印调用放在主函数中。我建议一步一步地跟随一些关于基本的 youtube 视频。这将在开始时对您有很大帮助。

【讨论】:

  • 虽然你的答案可能是正确的,但添加一个示例(代码)可能会对 OP 有很大帮助。
  • 谢谢你的回答,我会尽量这样做
  • 如果你能给我一个代码示例,它会真的很有帮助,因为通过你所做的,它只是说不能在静态主目录中引用非静态变量,所以是的,我真的很感激帮助
【解决方案2】:

来自daniweb

一个非静态变量只有在有一个实例时才存在 目的。如果你有一个静态方法,它不能访问任何变量 一个类对象,除非它具有该类的实例并使用它 到达变量。对于您的内部类,将 public 更改为 static 如果您希望 main 方法能够引用它。

这段代码应该可以工作:

public class PrimerPrograma{

     public static void main(String []args){
        Punto p = new Punto(5, 5);
        p.set(8,8);
        System.out.println(p.x+p.y);
     }
     
     public static class Punto{
        int x;          
        int y;
        
        public Punto(int lax, int lay) {
            x = lax;
            y = lay;
        }

        public void set(int lax, int lay){
            this.x = lax;
            this.y = lay;
        }
    }
}

我推荐阅读this讨论。

【讨论】:

  • 谢谢,在课堂上放置静态解决了这个问题,我查看了讨论,它真的帮助了我
猜你喜欢
  • 2021-03-05
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2016-05-23
  • 2018-06-27
  • 1970-01-01
相关资源
最近更新 更多