Java: при использовании конструкторов в вычислениях всегда выводится 0? - PullRequest
1 голос
/ 23 марта 2020

Я недавно начал использовать конструкторы в моих java программах. Следующая программа конвертирует валюты Евро в TL. Все в программе кажется правильным на мой взгляд, однако вывод всегда равен 0, когда программа компилируется и запускается. Я предполагаю, что проблема связана со значениями, не полученными из конструктора по умолчанию?

import java.io.*;
class tleuro
{ 
    double euro;
    double tl;


    tleuro()
    {
        double euro = 7;
        double tl = 0.14;
    }

    void convert()throws IOException
    {


        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("please select (euro to tl) or (tl to euro)");
        System.out.println("(1) Euro to tl");
        System.out.println("(2) Tl to euro");

        int choice =  Integer.parseInt(br.readLine()); 

        switch(choice)
        {
            case 1:
            {
                System.out.println("Please enter euro ammount");
                double euroammount = Integer.parseInt(br.readLine()); 
                euroammount = (euroammount*tl);
                System.out.println("You're tl ammount is "+euroammount);

            }
            break;
            case 2:
            {
                System.out.println("Please enter tl ammount");
                double tlammount = Integer.parseInt(br.readLine()); 
                tlammount = (tlammount*euro);
                System.out.println("You're euro ammount is "+tlammount);

            }
        }

    }

    public static void main(String args[])throws IOException
    {
        tleuro ob = new tleuro();

        ob.convert();


    }
}

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Конструктор инициализировал две локальные переменные, которые скрывают членов данных, поэтому они остаются со своими значениями по умолчанию, 0.0.

Удалите объявление переменной, и все будет в порядке:

tleuro() {
    // Use the members instead of declaring local variables
    euro = 7;
    tl = 0.14;
}

В качестве примечания: если euro и tl никогда не изменяются, вы можете объявить их как static final членов, вместо того, чтобы инициализировать их для каждого экземпляра.

0 голосов
/ 23 марта 2020

Вам не нужно объявлять переменные экземпляра как двойники в конструкторе. Просто оставьте этот бит, и все будет в порядке.

import java.io.*;
class tleuro
{
double euro;
double tl;


public tleuro()
{
    euro = 7;
    tl = 0.14;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...