2017-05-15 5 views
-6

오류의 원인을 찾으실 수 있습니까?전용 정적 사용

enter image description here

package calc; 

import java.util.Scanner; 

public class Calc { 



    Scanner scan = new Scanner(System.in); 

    public void add() { 
     System.out.println("Enter 1st number"); 
     int s1 = scan.nextInt(); 
     scan.nextLine(); 
     System.out.println("Enter 2nd number"); 
     int s2 = scan.nextInt(); 
     scan.nextLine(); 

     int sum = s1 + s2; 
     System.out.println("The sum is: " + sum); 

    } 

    public void diff() { 
     System.out.println("Enter 1st number"); 
     int d1 = scan.nextInt(); 
     scan.nextLine(); 
     System.out.println("Enter 2nd number"); 
     int d2 = scan.nextInt(); 
     scan.nextLine(); 

     int diff = d1 - d2; 
     System.out.println("The difference is: " + diff); 

    } 

    public void prod() { 
     System.out.println("Enter 1st number"); 
     int p1 = scan.nextInt(); 
     scan.nextLine(); 
     System.out.println("Enter 2nd number"); 
     int p2 = scan.nextInt(); 
     scan.nextLine(); 

     int prod = p1 + p2; 
     System.out.println("The product is: " + prod); 
    } 

    public void quo() { 
     System.out.println("Enter 1st number"); 
     int q1 = scan.nextInt(); 
     scan.nextLine(); 
     System.out.println("Enter 2nd number"); 
     int q2 = scan.nextInt(); 
     scan.nextLine(); 

     int quo = q1 + q2; 
     System.out.println("The quotient is: " + quo); 
    } 

    public static void main(String[] args) { 
     do { 

      Calc op = new Calc(); 
      Scanner scan = new Scanner(System.in); 
      char ans = 0; 

      System.out.println("Calculator"); 
      System.out.println("1.Addition\n" + "2.Subtraction\n" + "3.Multiplication\n" + "4.Division\n" + "Enter operation number:"); 
      int n1 = scan.nextInt(); 
      scan.nextLine(); 

      switch (n1) { 
       case 1: 
        op.add(); 
        break; 
       case 2: 
        op.diff(); 
        break; 
       case 3: 
        op.prod(); 
        break; 
       case 4: 
        op.quo(); 
        break; 
       default: 
        System.out.println("Invalid input"); 
        break; 
      } 

      System.out.println("Try again? [Y/N]"); 
      ans = scan.nextLine().charAt(0); 

     } while (ans == 'Y' || ans == 'y'); 
    } 

} 

하고 NetBeans는이 결과에 정확한 자동이 있습니다

package calc; 

import java.util.Scanner; 

public class Calc { 

    private static char ans; 
그것이 첨가

"개인 정적 숯 ANS를 「 그리고 내 코드를 어떻게 수정했는지 더 알고 싶습니다. 감사

+3

당신이 선언하면'내부 ans' 당신의 DO-동안 루프, 당신은'while'의 조건에서 사용할 수 없습니다,이 범위를 벗어납니다. – Berger

+0

더 나은 해결책은'static' 필드를 제거하고 대신'main'메소드에 varible 로컬을 선언하는 것입니다 :'char ans'. –

+0

while do while while do while char ans = 0;'을 선언하십시오. –

답변

1

ansdo{ ... } while() 루프 내에 정의되어 있지만 while에 조건으로 사용할 수 있도록 설정해야합니다.

그렇게 :

char ans = 0; 
do { 
    Calc op = new Calc(); 
    Scanner scan = new Scanner(System.in); 
    ans = 0; 
+1

하하는 단지 그것을 깨달았습니다. –