0

我需要帮助了解如何将变量从一个类链接到我的主类,它似乎在我之前使用过的某些代码实例中工作,但我不清楚它是如何工作的。在这种情况下,Dollar 变量需要从来自扫描仪输入的测试器类中的integer我的方法中提取。main另外我如何实现我的while循环并让它调用其他方法,以便它打印所需的变量。这个程序的重点是找出你可以用固定金额获得的最大酒吧,假设每个是 1 美元,每个酒吧有一张优惠券,6 优惠券可以让你免费酒吧(里面有 1 优惠券)。我是初学者,我不知道下一步该去哪里。

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

2 回答 2

1

发布的代码有很多语法错误。要纠正这些错误,您应该考虑以下事项:

  • 虽然不是错误,但方法名称应以小写字符开头(根据良好的编程习惯)
  • 您在一个类中声明了两个公共类,其中它给出了一个错误(假设您在一个文件中使用这两个类)
  • 您将变量(优惠券和条形图)声明为未分配变量(使用公共 int 优惠券,条形图;就足够了​​)。
  • 您的 main 方法采用 int (优惠券),它不会向 JVM 注册为 main 方法,因此它不允许您运行程序。
  • 该程序创建一个新的 VendMachineTest 对象,该对象在应用程序期间未使用。

  • 在您的 VendingMachine 类中,您将一个 int 除以一个 int,这将产生一个 double(可能会丢失精度)

您想使用内部类来显示值。

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 vendingMachine = new VendingMachine(dollars);

您可以使用 vendingMachine.getBars() 而不是使用类名。

于 2013-10-30T23:14:12.773 回答
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());
}


}   
于 2013-10-30T23:23:38.597 回答