【问题标题】:Printing Return values from other class打印其他类的返回值
【发布时间】:2014-01-19 04:06:52
【问题描述】:

我对 java 很陌生,并且正在玩代码。我很好奇如何在 A 类中使用 System.out.print 在 B 类中打印返回值。我不想在 B 类中使用 System.out.print。我已经知道如何做到这一点。

-------- A 级 ------------------------------------- ---

import java.util.Scanner;

public class Moregot {


    public static void main(String[] args){         
        Scanner scan = new Scanner(System.in);
        Give giveObj = new Give();
        System.out.println("Enter your First Name ");
        String fNamed = scan.nextLine();
        System.out.println("Enter your Last Name ");
        String lNamed = scan.nextLine();
        System.out.println("Enter your Age ");
        int theAge = scan.nextInt();
        Give.setInfomation(fNamed, lNamed, theAge);         
        System.out.println("Your Name is  " + giveObj.getfN() + " "+ giveObj.getlN() + " and you are age "+ giveObj.getOld());
    }
}

-------- B 类 ------------------------- ---

package Practice2;

public class Give {

    private String _fName, _lName;

    private int _age;

    public static void setInfomation(String fNam, String lNam, int old)
    {   
        String _fName = fNam;
        String _lName = lNam;
        int _age = old; 
    }

    public String getfN(){
        return _fName;
    }

    public String getlN(){
        return _lName;
    }

    public int getOld(){
        return _age;
    }

}

【问题讨论】:

  • 你的 Give 类应该没有静态方法或字段,没有。
  • 已编辑问题:已格式化代码。已删除“代码解决方案”请求。

标签: java printing return


【解决方案1】:

在您的 Give 类中更改行:

String _fName = fNam;
String _lName = lNam;
int _age = old; 

到:

_fName = fNam;
_lName = lNam;
_age = old; 

另外,改变:

Give.setInfomation(fNamed, lNamed, theAge);

到:

giveObj.setInfomation(fNamed, lNamed, theAge);

并从setInfomation() 中删除static 声明

一个问题是,在方法@​​987654328@ 中,您创建了新变量并将值分配给它们,而不是将参数分配给您的类成员。

第二个问题是你用Give 调用setInfomation() - 你的类(因为它被声明为静态)而不是让它非静态并用你创建的实例调用它:giveObj

【讨论】:

  • 问题还在于setInformation(String, String, String)方法是静态的:P
【解决方案2】:

首先,setInfomation(...) 不应该是静态方法,因为您正在尝试设置已创建实例的值:

public void setInfomation(String fNam, String lNam, int old)
{
    _fName = fNam;
    _lName = lNam;
    _age = old;
}

另外,不要在方法setInfomation 中再次声明_fNamelName_age,因为您隐藏了类中声明的字段

最后,在main 方法中,使用您创建的实例giveObj 调用setInformation

giveObj.setInfomation(fNamed, lNamed, theAge);

【讨论】:

    【解决方案3】:
    • 从 Give 类中删除所有静态方法。 Moregot 类应该创建 Give 实例并调用它们的方法,但不能从类中调用静态方法。
    • 事实上getInformation方法应该被一个构造函数代替。
    • 在构造函数中你应该使用传入的参数来设置类的字段,即this.foo = foo;
    • 我会将 main 方法更改为获取所有初始数据的位置,然后然后创建一个 Give 对象,将此初始数据传递给它的构造函数。
    • 我会给 Give 类一个像样的toString() 方法,它返回对象状态的字符串表示。例如,您的方法将返回一个字符串,其中包含名称字段和年龄字段中的值。
    • 然后,任何拥有 Give 对象的类都可以通过将 Give 对象传递给 System.out.println(...) 调用轻松地将其打印出来。
    • 您将需要阅读一本体面的 Java 教科书来学习基本知识,因为您的所有后续编程都将以此为基础。 Bruce Eckel 的 Thinking in Java 是一本不错的著作。

    首选编码示例回复

    您可以更好地尝试自己的编码,因为您将通过努力学到更多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多