繁体   English   中英

将值输入从主方法传递给私有变量

[英]Passing a value input from main method to a private variable

我试图从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(); }
}

我添加了额外的显示,因为我想查看该值是否正确传递。 当我运行它时,我意识到并非如此。 尽管输入了不同的数字,但长度和长度都设置为零。 谁能看到我在做什么错? 衷心感谢您提供彻底的解答(因为我才刚刚起步)。

您没有设置私有变量的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);

这是封装课程。 正如@salihrkc所说,您的问题是您实际上从未设置过存在于“扩展”对象中的长度变量。 如果您尝试打印传递给对象的“长度”,您会发现它到达那里就好了。

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

查看我链接的两个资源,它们将为您提供帮助。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM