使用While循环,使用扫描仪输入变量

时间:2013-10-30 21:56:55

标签: java while-loop java.util.scanner

我需要帮助理解如何将变量从类链接到我的主类,它似乎在我以前使用的某些代码实例中工作但我不清楚它是如何工作的。在这种情况下,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+"");
    }   

2 个答案:

答案 0 :(得分:1)

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

  • 虽然不是错误,但方法名称应以小写字符开头(根据良好的编程习惯)
  • 您在一个类中声明了两个公共类,其中它给出了一个错误(假设您在一个文件中使用了这两个类)
  • 您将变量(优惠券和条形图)声明为未分配的变量(使用公共int优惠券,条形图;就足够了)。
  • 您的主要方法是将一个int(优惠券)作为主要方法注册到JVM,因此它不允许您运行该程序。
  • 程序会创建一个新的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类中的方法声明为static,那会更好。如果您创建一个新的VendingMachine对象

VendingMachine vendingMachine = new VendingMachine(dollars);

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

答案 1 :(得分:0)

不确定你的程序应该做什么,但......

  1. 您不应该使用" static",这实际上用于常量变量。

    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();
    
  5. 也许你正在努力实现这方面的目标?

    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());
    }
    
    
    }