2013-08-12 3 views
0

У меня есть метод A в классе Test, который генерирует ряд a и b, Херес-код для него:Доступ значение INT вне метода

public class Test 
{ 
    int a,b; 

    public void A() 
    { 
     a = currentMenu.getCurrentFocusedItem().getItemID(); 
     b = currentMenu.getMenuID(); 
     System.out.println("Inside A()" + a + " &&" + b); 
    } 

    public void B() 
    { 
     System.out.println("Inside B()" + a + " &&" + b); 
    } 
} 

Теперь я хочу, чтобы Acces в a и bint значения, в другом методе B(), в том же
класс файл. Нужна указатель

+0

а = currentMenu.getCurrentFocusedItem() getItemID(). b = currentMenu.getMenuID(); System.out.println ("Внутри A()" + a + "&&" + b); Что этот println дает? – Mysterion

+1

Вы вызываете метод A() перед вызовом метода B(). – Jayamohan

+0

ваша текущая конструкция немного рискованна, так как 'B()' может быть выведена перед 'A()', что оставляет вас с неустановленными значениями – user902383

ответ

1

вы можете получить а и Ь значения в instance инициализации block

public class TestClass { 
    int a,b; 
    { 
     a= 10; 
     b =45; 
    } 

    public void A() { 
     System.out.println("Inside A()" + a + " &&" + b); 
    } 

    public void B() { 
     System.out.println("Inside B()" + a + " &&" + b); 
    } 

} 

Используя этот метод, вы не должны вызывать ваш метод A() для заполнения значений, которые будут использоваться в B()

+0

Что вы пытаетесь сделать здесь, переопределив a и b? –

+0

@JunedAhsan, спасибо, я не заметил, что я создавал локальные переменные –

+0

приятно видеть исправление ;-) –

1

Если вы работаете с тем же экземпляром класса Test, значение a и b, как указано в методе A() все равно должно быть видно во мне thod B().

Таким образом, ниже будет работать:

Test test = new Test(); 

test.A(); 
test.B(); 

Однако, ниже не будет

new Test().A(); 
new Test().B(); 

На стороне записки, методы в Java всегда должны начинаться со строчной буквой и использовать верблюжий ,

1

Если то, что вы пытаетесь сделать, чтобы получить текущее (и последнее) значение а и б, вы могли бы написать 2 метод, как

public int getA() { 
    return currentMenu.getCurrentFocusedItem().getItemID(); 
} 

public int getB() { 
    return currentMenu.getMenuID(); 
} 

и использовать эти методы вместо вызова() для обновления значений а, Ь, а затем доступ к ним снова в методе В.

0

Вы можете попробовать это слишком

public void A() 
{ 
    a = currentMenu.getCurrentFocusedItem().getItemID(); 
    b = currentMenu.getMenuID(); 
    System.out.println("Inside A()" + a + " &&" + b); 
} 
public void B() 
{ 
    Test test=new Test(); 
    test.A();  // assign values for a and b 
    System.out.println("Inside B()" + a + " &&" + b); 
} 
Смежные вопросы