Объект создан внутри, если оператор не работает

import java.util.Scanner;

public class Piggy {

    float poson;

public Piggy() {

    this.poson = 0;
    System.out.println("Dimiourgithike koumparas me diathesimo ipoloipo: " + poson + "€");
}

public Piggy(float poso) { 

    if (poso >= 0) { 
        this.poson = poso;
        System.out.println("Dimiourgithike koumparas me diathesimo ipoloipo: " + poso + "€");
    } else {
        this.poson = 0;
        System.out.println("Dimiourgithike koumparas me diathesimo ipoloipo: " + poso + "€");
    }
}

public float epistrofiYpoloipou() {
    return poson;
}

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String arxiko_poso;

    System.out.println("Doste to arxiko poso pou tha periexei o koumparas: ");
    arxiko_poso = input.nextLine();
    if (arxiko_poso.equals("")) {
        Piggy koumparas = new Piggy();
    } else {
        float init_value = Float.parseFloat(arxiko_poso);
        Piggy koumparas = new Piggy(init_value);
    }

    float upoloipo = koumparas.epistrofiYpoloipou();
    System.out.println("To upoloipo einai: " + upoloipo + "€");
   }
}

Привет. Я сделал два конструктора, один не имеет аргументов и инициализирует "poson" с 0, а другой принимает пользовательский ввод и инициализирует "poson" с этим.

В main() я хочу вызвать первый конструктор, если пользователь ничего не вводит при запросе, поэтому я создал строку, а когда пользователь вводит что-то, я конвертирую строку в float и вызываю второй конструктор.

Но потом, когда я пытаюсь вызвать мою функцию "epistrofiYpoloipou", используя "koumparas.epistrofiYpoloipou();" я получаю ошибку "не могу найти символ". Что я здесь не так делаю?

1 ответ

Решение

Вы должны объявить koumparas переменная перед оператором if-else, если вы хотите использовать его вне этого оператора:

Piggy koumparas;
if (arxiko_poso.equals("")) {
    koumparas = new Piggy();
} else {
    float init_value = Float.parseFloat(arxiko_poso);
    koumparas = new Piggy(init_value);
}

float upoloipo = koumparas.epistrofiYpoloipou();
Другие вопросы по тегам