Java 在if语句中创建的对象不起作用

Java 在if语句中创建的对象不起作用,java,object,find,symbols,Java,Object,Find,Symbols,你好。我创建了两个构造函数,一个没有参数,用0初始化“poson”,另一个接受用户输入,用0初始化“poson” 在main()中,如果用户在被询问时没有输入任何内容,我想调用第一个构造函数,因此我创建了一个字符串,当用户输入内容时,我将字符串转换为float并调用第二个构造函数 但是当我尝试使用“koumparas.epitrofiypoloipou();”调用我的“epitrofiypoloipou”函数时,我得到了一个“找不到符号”错误。我在这里做错了什么?如果希望在if-else语句之外

你好。我创建了两个构造函数,一个没有参数,用0初始化“poson”,另一个接受用户输入,用0初始化“poson”

在main()中,如果用户在被询问时没有输入任何内容,我想调用第一个构造函数,因此我创建了一个字符串,当用户输入内容时,我将字符串转换为float并调用第二个构造函数


但是当我尝试使用“koumparas.epitrofiypoloipou();”调用我的“epitrofiypoloipou”函数时,我得到了一个“找不到符号”错误。我在这里做错了什么?

如果希望在if-else语句之外使用它,则应在if-else语句之前声明
koumparas
变量:

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 + "€");
   }
}

是的,这很有效。非常感谢。但是你能详细解释一下为什么我必须这么做吗?@user3120283变量只在声明它的范围内可用<代码>{}是一个作用域。您在两个范围内声明了
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();