2017-11-12 18 views
1
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(); 
+0

예이 작동합니다. 고맙습니다. 하지만 내가 왜 그렇게해야하는지 자세히 설명해 줄 수 있니? – user3120283

+0

@ user3120283 변수는 변수가 선언 된 범위에서만 사용할 수 있습니다. '{}'는 범위입니다. 'if' 본문의 범위와'else' 본문의 범위의 두 범위에서'koumparas' 변수를 선언했습니다. 이러한 범위를 벗어나는 변수는 컴파일러가 알지 못합니다. – Eran

+0

아, 알겠습니다. 그래, 나는 바보 같지 않아. 감사합니다 :) – user3120283