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