2013-10-30 6 views
0

클래스의 변수를 기본 클래스에 연결하는 방법을 이해하는 데 도움이 필요합니다. 이전에 사용한 코드의 특정 인스턴스에서 작동하는 것처럼 보입니다. 그것은 작동합니다. 이 경우 달러 변수는 스캐너 입력에서 오는 main 메서드의 테스터 클래스에서 integer을 가져와야합니다. 또한 내 while 루프를 구현하고 원하는 변수를 인쇄 할 수 있도록 다른 방법을 호출하게하려면 어떻게해야합니까? 이 프로그램의 요점은 고정 된 금액으로 얻을 수있는 최대 바를 찾아내는 것입니다. 각 금액은 1 달러이고, 각 바는 하나의 쿠폰을 가지고 있으며, 6 쿠폰은 무료 바를 (내부의 쿠폰과 함께) 가져옵니다. Im 초심자와 나는 다음에 어디로가는 지 파악할 수 없다.While 루프 사용, 스캐너 입력 변수 사용

public class VendingMachine 
     { 
      public static int dollars; 
      public static int coupons = dollars; 
      public static int bars = dollars; 

    public VendingMachine (int x) 
        { 
        dollars = x; 

        } 
    public VendingMachine() 
        { 
        this (0); 
        } 

    public static void Bars() 
     { 
      int newbars; 
      newbars = coupons/6; 
      bars = bars + newbars; 

     } 

    public static void Coupons() 
     { 
      int newcoupons; 
      newcoupons = (coupons % 6) +(coupons/6); 
      coupons = newcoupons + coupons; 
     } 


    } 

    import java.util.*; 



    public class VendMachineTest{ 


    public static void main(String[]args, int coupons) 

    { 
     Scanner user_input = new Scanner(System.in); 

     int dollars; 
     System.out.println("Amount of Cash?"); 
     dollars = user_input.nextInt(); 

     VendMachineTest totalbars = new VendMachineTest(); 
     while (coupons >= 6) 
     {  
      VendMachineTest.Bars(); 
      VendMachineTest.Coupons(); 
     } 
    } 

    System.out.println(dollars +""+coupons+""+bars+""); 
    } 

답변

1

게시 된 코드의 구문 오류가 많습니다. 다음 고려해야 이러한 오류를 해결하려면 :

  • 오류, 메소드 이름 (좋은 프로그래밍 습관에 따라) 소문자로 시작해야하지 않지만
  • 당신은 클래스에서 두 개의 public 클래스를 선언하는
  • ,
  • 변수 (쿠폰 및 막대)를 할당되지 않은 변수로 선언하고 있습니다 (공용 int 쿠폰, 막대를 사용하는 것으로 충분합니다). 오류가 발생했습니다 (두 파일을 하나의 파일로 사용한다고 가정 함).
  • 주된 방법은 JVM에 등록하지 않는 int (쿠폰)를 주 방법으로 사용하므로 프로그램을 실행할 수 없습니다.
  • 프로그램이 응용 프로그램에서 사용되지 않는 새 VendMachineTest 개체를 만듭니다. 당신의 정의한 VendingMachine 클래스에서

  • 당신은 당신은 값을 표시하는 내부 클래스를 사용하려면

더블 (정밀도가 손실)을 생성합니다를 int로 int를 나누어 있습니다. 정적으로 정의한 VendingMachine 클래스의 메소드를 선언하지 않은 경우

public class VendMachineTest{ 

    public static void main(String[] args){ 
      //insert your test method here 
    } 

    private class VendingMachine{ 
     public double coupons, dollars, bars; // declare the variable 
     // values declared here can be used in the VendMachineTest 
    } 

} 

또한, 더 나은 것입니다. 새 정의한 VendingMachine 객체를

VendingMachine vendingMachine = new VendingMachine(dollars); 

를 만들 경우 당신은 오히려 클래스 이름을 사용하는 것보다 vendingMachine.getBars()를 사용할 수 있습니다. 당신은 "정적"을 사용하지 않아야 프로그램을 할 수 있지만, 가정 무엇인지

0

하지 ....

  1. ,이 정말 상수 변수에 사용됩니다.

    public static int dollars; 
    public static int coupons = dollars; 
    public static int bars = dollars; 
    
  2. 이 생성자는 프로그램의 기능이 없습니다

    public VendingMachine() 
    { 
        this (0); 
    } 
    
  3. "%는"나는 당신이 무엇 먹으 렴 생각하지 않는다 ...이 나머지를 얻기 위해 사용되는 모듈로 연산자 여기에서하고 싶다.

    newcoupons = (coupons % 6) +(coupons/6); 
    
  4. 은 여기 "정의한 VendingMachine"하지 테스터 클래스의 인스턴스를 만들려고합니다.

    VendMachineTest totalbars = new VendMachineTest(); 
    

아마도이의 라인을 따라 뭔가를 달성하기 위해 노력하고 있었다?

public class VendingMachine 
{ 
public int dollars; 
public int coupons; 
public int mybars = 0; 

public VendingMachine (int d,int c) 
{ 
    dollars = d; 
    coupons = c; 
} 

public void buy_One_Bar() 
{ 

    if(coupons >5) //I get a free bar? 
    { 
     mybars++; // mybars = mybars + 1; 
     coupons = coupons - 6; 

    }else{ 
     dollars--; //Decrease amount of dollars by 1 
     mybars++; //You gain a bar 
     coupons++; //You gain a coupon 

    } 

} 

public int getBars() 
{ 
    return mybars; 
} 

public int getDollars() 
{ 
    return dollars; 
} 

public int getCoupons() 
{ 
    return coupons; 
} 

    } 

import java.util.Scanner; 

public class VendMachineTest{ 

public static void main(String[]args) 

{ 
    Scanner user_input = new Scanner(System.in); 

    int starting_dollars; 
    int starting_coupons; 

    System.out.println("Amount of Cash?"); 
    starting_dollars = user_input.nextInt(); 
    System.out.println("How many coupons do you have?"); 
    starting_coupons = user_input.nextInt(); 

VendingMachine vm = new VendingMachine(starting_dollars, starting_coupons); 

vm.buy_One_Bar(); //Buy some bars 

//Print out what you have... 
System.out.println("Your Dollars :"+ vm.getDollars()); 
System.out.println("Amount of Coupons:"+ vm.getCoupons()); 
System.out.println("Amount of Bars you have:"+ vm.getBars()); 
} 


}