2013-07-26 2 views
0

Я практиковал программу банковского счета, и я столкнулся с этой небольшой проблемой.Я получаю тот же номер с методом добавления?

Я сделал это как способ, чтобы было легче понять.

Основной метод

public static void main(String[] args) { 
    Scanner in=new Scanner(System.in); 
    double b=0; 

    while(b!=-1){ 
     b=in.nextInt(); 
     ddd(b); 
    } 
} 

Способ присоединения

public static void Addition(double b){ 
    double g=0; 
    g+=b; 

    System.out.println("GGGGGGGG"+ g); 
} 

Проблема заключается в том, что я получаю тот же вход я войти каждый раз. Я знаю, что проблема с

double g=0; 

Потому что каждый раз, когда я вызываю метод additiong будет инициализирован к нулю из-за это заявление double g=0;, но я должен парафировать его, или я получаю ошибку компиляции.

Что мне делать, чтобы исправить эту проблему.

+0

Сделайте 'g' в поле. Локальные переменные существуют только для времени жизни вызова метода. –

+0

Спасибо, я исправил его. –

ответ

4

Вы можете сделать double g членом класса, объявив его вне методов. Так вот пример класс

class TestClass { 

    static double g = 0; 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     double b = 0; 
     while (b != -1) { 
      b = scan.nextDouble() //you need to change nextInt() to nextDouble() 
      add(b); 
     } 
     System.out.println(g); 
    } 

    public static void add(double b) { 
     g += b; //g refers to the variable about the main method 
    } 
} 

Это не может быть точно, как ваш класс работает, но с использованием переменной г вне метода убеждается класс сохраняет свое значение, даже если этот метод закончилась. Надеюсь это поможет!

+0

Я очень ценю ваш ответ. Большое спасибо. –

+0

Нет проблем, вам обязательно нужно будет узнать об этом позже, если продолжите кодирование :) –

0

Инициализировать его непосредственно перед утверждением while.