将main方法的值输入传递给私有变量

时间:2014-01-31 23:38:56

标签: java methods getter argument-passing

我试图从main方法传递一个值并将其设置为私有变量。以下是相关的主要方法:

import java.util.*;
public class Experiment{
private static Extension extension=new Extension();

public static void main(String[] ars);{
Scanner input=new Scanner(System.in);

System.out.print("Enter the length: ");
int length=input.nextInt;
extension.messages(length); }
}

以及它的内容:

public class Extension{
private int theLength;

public void Extension(int length){
theLength=length; }

public void setLength(int length){
theLength=length; }

public int getLength() {
return theLength }

public void  messages(int length){
System.out.println("theLength: "+theLength);
System.out.println("Length: "+getLength(); }
}

我添加了额外的显示,因为我想查看值是否正确传递。当我运行它时,我意识到它不是;尽管输入了不同的数字,但长度和长度都设置为零。谁能看到我做错了什么?我真诚地感谢一个彻底的答案(因为我刚刚开始)。

2 个答案:

答案 0 :(得分:1)

您没有设置私有变量length。你应该调用setLength(int length)方法。

更改为

System.out.print("Enter the length: ");
int length=input.nextInt;
extension.setLength(length); // this will set the private variable
extension.messages(length);

答案 1 :(得分:0)

这是encapsulation的一课。正如@salihrkc所说,你的问题是你实际上从未设置过“扩展”对象中存在的长度变量。如果您尝试将“长度”打印为传入您的对象,您会发现它已经很好了。

您使用点运算符(例如extension.messages(length);)对您的对象进行操作,以调用messages方法。您应该意识到的关键点是您不能仅通过执行extension.theLength = length;来设置对象长度。这是因为private修饰符。相反,你应该使用“getter”和“setter”方法。这些函数存在于您的对象中,因此可以访问私有变量,因此您可以执行extension.setLength(length);System.out.println(extension.getLength());

之类的操作

查看我链接的两个来源,他们会帮助。

祝你好运。