2014-01-31 3 views
0

Я пытаюсь передать значение из основного метода и установить его в приватную переменную. Вот основной метод, который уместен:Передача значения от основного метода к частной переменной

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(); } 
} 

я добавил дополнительный дисплей, потому что я хотел бы видеть, если значение становилось передано правильно. Когда я запускаю его, я понимаю, что это не так; как длина, так и длина установлены на ноль, несмотря на то, что они вводят разные числа. Может ли кто-нибудь увидеть, что я делаю неправильно? Я искренне благодарен за тщательный ответ (поскольку я только начинаю).

+0

Где вы устанавливаете длину? –

+0

В основном методе. [Вход сканера = новый сканер (System.in);], за которым следует [int length = input.nextInt;]. Я бы ввел число (например, 4). – LuneraEve

+0

Таким образом, присваивается значение 4 локальной переменной 'length'. Как это связано с переменной 'theLength' в объекте' Extension'? –

ответ

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); 
0

Это урок encapsulation. Ваша проблема, как сказал @salihrkc, заключается в том, что вы никогда не устанавливаете переменную длины, которая существует в вашем объекте «Расширение». Если вы попытаетесь напечатать «длину», передаваемую вашему объекту, вы увидите, что он добирается до предела.

Вы используете свой объект, используя оператор точки (например, extension.messages(length);, чтобы вызвать метод сообщений). Ключевыми моментами, которые вы должны понимать, является то, что вы не можете установить длину объектов, просто сделав extension.theLength = length;. Это из-за модификатора private. Вместо этого вы должны использовать методы «getter» и «setter». Эти функции существуют внутри вашего объекта и, следовательно, доступ к частным переменным, поэтому вы можете сделать что-то вроде extension.setLength(length); и System.out.println(extension.getLength());

Проверьте два источника, с которыми я связан, они помогут.

Удачи.

Смежные вопросы