【问题标题】:I can't get this to work, methods & instance variables我无法让它工作,方法和实例变量
【发布时间】:2012-11-12 16:42:48
【问题描述】:

我是编程新手,如果这是一个愚蠢的错误,我很抱歉,但我一直收到此错误 "CompanyAddress.java:11: error: cannot find symbol System.out.println(testObject.getName(CompanyName));" 我不知道我做错了什么。

主要的。

import java.util.Scanner;
public class CompanyAddress
{
  public static void main(String[] args)
  {
     Scanner scan = new Scanner(System.in);
     test testObject = new test();
     System.out.println("Enter name: ");
     String input = scan.nextLine();
     testObject.getName(input);
     System.out.println(testObject.getName(CompanyName));
  }
}   

我的 test.java

import java.util.Scanner;
public class test 
{
    String Name;

    public String getName(String CompanyName) 
    {
        Name = CompanyName;
        return Name;
    }


}

【问题讨论】:

    标签: java variables methods instance


    【解决方案1】:

    你必须声明变量CompanyName。像这样的:

    String CompanyName = "CompanyName1";
    System.out.println(testObject.getName(CompanyName));
    

    既然你正在修改一个变量,你应该这样做:

    public class test
    {
           String Name;
    
            public void setName(String CompanyName) {this.Name = CompanyName;}
    
            public String getName()                 {return Name;}
    

    }

    getName 方法将返回“公司”的名称,setName 将修改“公司”的名称。这样您就可以区分不同的关注点

    此外,您以后可以在不修改公司实际名称的情况下调用 getName 方法。

    【讨论】:

      【解决方案2】:

      首先您需要先声明变量companyName,然后再将其传递给您的方法。

      其次,你的方法:-

      public String getName(String CompanyName) 
      {
          Name = CompanyName;
          return Name;
      }
      

      对我来说似乎很奇怪。你使用的方法和getter and setter一样。

      你应该有separate setter and getter: -

      public void setName(String companyName) {
          name = companyName;
      }
      
      public String getName() {
          return name;
      }
      

      并分别调用它们。

      testObject.setName(companyName);
      
      System.out.println(testObject.getName());
      

      只是一个建议:-

      遵循 Java 命名约定。字段名和方法名应以小写字母开头。

      【讨论】:

      • @Downvoter .. 请发表评论,因为我不认为你投票背后的意图是什么。
      • 我投了赞成票,因为这是迄今为止最好的答案。除了回答 OP 的问题之外,您还添加了一些好的建议,这些建议来自 OP 的代码示例。
      • 非常感谢,我明白了,但是有没有只使用一种方法?
      • 是的,您可以更改您的 getName 方法,以便它检查输入参数是否为空,如果是,则仅返回现有值 - 然后您只需使用 System.out.println(testObject.getName(null));。但这在您的应用程序中确实是一种糟糕的方法。
      • @Kingboom4.. 为什么要使用单一方法。好吧,这不是不可能的,但相信我,那绝对是非常糟糕的设计。这是一个类的基本结构,有constructorfieldssettersgetters。毫无疑问,您应该遵循它。
      【解决方案3】:

      我认为您希望您的程序执行以下操作。一个函数setName() 将传递的值设置为name,一个getName() 将返回name 的值。

      import java.util.Scanner;
      public class test 
      {
          String Name;
      
          public String getName()
          {
              return Name;
          }
      
          public String setName(String companyName)
          {
              this.Name=companyName;
          }
      }
      

      现在

      public class CompanyAddress
      {
        public static void main(String[] args)
        {
           Scanner scan = new Scanner(System.in);
           test testObject = new test();
           System.out.println("Enter name: ");
           String input = scan.nextLine();
           testObject.setName(input);
           System.out.println(testObject.getName());
        }
      }   
      

      【讨论】:

      • 任何人,如果您认为需要检查更好的格式/拼写。随意编辑。 M 在电话上。可以做很多关于格式化。提前致谢
      【解决方案4】:

      将您的“getName”重命名为“setName”(因为它是一个 setter)并为您的类添加一个适当的 getter 并使用它:

      public class test 
      {
          String Name;
      
          public void setName(String CompanyName) 
          {
              Name = CompanyName;
          }
      
          public String getName() {
              return Name;
          }
      }
      

      然后:

       System.out.println(testObject.getName());
      


      此外,如果您遵守标准命名约定,它将对您有所帮助:

      • 类名以大写字母开头
      • 方法、变量和参数名称以小写字母开头

      【讨论】:

        【解决方案5】:
        System.out.println(testObject.getName(CompanyName));
        

        CompanyName 这是什么?它是未知的符号。可能是System.out.println(testObject.getName("CompanyName"));

        String CompanyName ="name";
        System.out.println(testObject.getName(CompanyName);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-09-22
          • 1970-01-01
          • 2022-11-17
          • 2011-08-27
          • 2014-03-06
          • 2014-09-02
          • 1970-01-01
          相关资源
          最近更新 更多