-1

我在public String makeChange(int amount) {这里的方法开始非法表达。我正在制定一个零钱分配程序,我有点卡在这里,我想我会做对,但我遇到了这个错误。

package changedispenser;

public class ChangeDispenser {


private static int quarters, dimes, nickels, pennies;
private static int penniesLeft, nickelsLeft, dimesLeft, quartersLeft;
private static int pennyRollsAdded = 1;
private static int nickelRollsAdded = 1;
private static int dimeRollsAdded = 1;
private static int quarterRollsAdded = 1;
public static final int PENNIES_PER_ROLL = 50;
public static final int NICKELS_PER_ROLL = 40;
public static final int DIMES_PER_ROLL = 50;
public static final int QUARTERS_PER_ROLL = 40;

public static void main(String[] args) {



public String makeChange(int amount) {


    if (amount > 99 || amount < 0) {
        System.out.println("");
    }

    quarters = amount / 25;

    amount = amount % 25;

    dimes = amount / 10;

    amount = amount % 10;

    nickels = amount / 5;

    amount = amount % 5;

    pennies = amount;




    do {

        if (quarters != 0) {
            System.out.print("  Quarters: " + quarters);
        }
        if (dimes != 0) {
            System.out.print("  Dimes: " + dimes);
        }
        if (nickels != 0) {
            System.out.print("  Nickels: " + nickels);
        }
        if (pennies != 0) {
            System.out.println("  Pennies: " + pennies);
        }





        //Fix this so that it outputs the appropriate change IE: 23 cents is 2 dimes 3 pennies 


        System.out.println("Coins Left:");
        System.out.println("Quarters: " + quartersLeft);
        System.out.println("Dimes:    " + dimesLeft);
        System.out.println("Nickels:  " + nickelsLeft);
        System.out.println("Pennies:  " + penniesLeft);
        System.out.println("Rolls Added: ");
        System.out.println("Quarters: " + quarterRollsAdded);
        System.out.println("Dimes:    " + dimeRollsAdded);
        System.out.println("Nickels:  " + nickelRollsAdded);
        System.out.println("Pennies:  " + pennyRollsAdded);
    } while (amount > 0 && amount <= 99);


    return "Quarters: " + quarters + "  Dime: " + dimes + "   Nickels: " + nickels + "   Pennies: " + pennies;

}

public int getPenniesLeft() {
    return penniesLeft;
}

public void setPenniesLeft(int penniesLeft) {
    this.penniesLeft = penniesLeft;

    if (penniesLeft <= 0) {
        pennyRollsAdded = pennyRollsAdded++;
    }
}

public int getNickelsLeft() {
    return nickelsLeft;
}

public void setNickelsLeft(int nickelsLeft) {
    this.nickelsLeft = nickelsLeft;

    if (nickelsLeft <= 0) {
        nickelRollsAdded = nickelRollsAdded++;
    }
}

public int getDimesLeft() {
    return dimesLeft;
}

public void setDimesLeft(int dimesLeft) {
    this.dimesLeft = dimesLeft;

    if (dimesLeft <= 0) {
        dimeRollsAdded = dimeRollsAdded++;
    }
}

public int getQuartersLeft() {
    return quartersLeft;
}

public void setQuartersLeft(int quartersLeft) {
    this.quartersLeft = quartersLeft;

    if (quartersLeft <= 0) {
        quarterRollsAdded = quarterRollsAdded++;
    }
}

public int getPennyRollsAdded() {
    return pennyRollsAdded;
}

public void setPennyRollsAdded(int pennyRollsAdded) {
    this.pennyRollsAdded = pennyRollsAdded;
}

public int getNickelRollsAdded() {
    return nickelRollsAdded;
}

public void setNickelRollsAdded(int nickelRollsAdded) {
    this.nickelRollsAdded = nickelRollsAdded;
}

public int getDimeRollsAdded() {
    return dimeRollsAdded;
}

public void setDimeRollsAdded(int dimeRollsAdded) {
    this.dimeRollsAdded = dimeRollsAdded;
}

public int getQuarterRollsAdded() {
    return quarterRollsAdded;
}

public void setQuarterRollsAdded(int quarterRollsAdded) {
    this.quarterRollsAdded = quarterRollsAdded;
}
}

新代码,这里是包changedispenser;

 public class ChangeDispenser {

private static int quarters, dimes, nickels, pennies;
private static int penniesLeft, nickelsLeft, dimesLeft, quartersLeft;
private static int pennyRollsAdded = 1;
private static int nickelRollsAdded = 1;
private static int dimeRollsAdded = 1;
private static int quarterRollsAdded = 1;
public static final int PENNIES_PER_ROLL = 50;
public static final int NICKELS_PER_ROLL = 40;
public static final int DIMES_PER_ROLL = 50;
public static final int QUARTERS_PER_ROLL = 40;

public static void main(String[] args) {
       if (quarters != 0) {
    System.out.print("  Quarters: " + quarters);
    }
    if (dimes != 0) {
    System.out.print("  Dimes: " + dimes);
    }
    if (nickels != 0) {
    System.out.print("  Nickels: "+ nickels);    
    }
    if (pennies !=0) {
    System.out.println("  Pennies: " + pennies);    
    }




}
 ChangeDispenser() {
    quartersLeft = QUARTERS_PER_ROLL;
    dimesLeft = DIMES_PER_ROLL;
    nickelsLeft = NICKELS_PER_ROLL;
    penniesLeft = PENNIES_PER_ROLL;
    pennyRollsAdded = 1;
    nickelRollsAdded = 1;
    dimeRollsAdded = 1;
    quarterRollsAdded = 1;
}






public int getPenniesLeft() {
    return penniesLeft;
}

public void setPenniesLeft(int penniesLeft) {
    this.penniesLeft = penniesLeft;

    if (penniesLeft <= 0) {
        pennyRollsAdded = pennyRollsAdded++;
    }
}

public int getNickelsLeft() {
    return nickelsLeft;
}

public void setNickelsLeft(int nickelsLeft) {
    this.nickelsLeft = nickelsLeft;

    if (nickelsLeft <= 0) {
        nickelRollsAdded = nickelRollsAdded++;
    }
}

public int getDimesLeft() {
    return dimesLeft;
}

public void setDimesLeft(int dimesLeft) {
    this.dimesLeft = dimesLeft;

    if (dimesLeft <= 0) {
        dimeRollsAdded = dimeRollsAdded++;
    }
}

public int getQuartersLeft() {
    return quartersLeft;
}

public void setQuartersLeft(int quartersLeft) {
    this.quartersLeft = quartersLeft;

    if (quartersLeft <= 0) {
        quarterRollsAdded = quarterRollsAdded++;
    }
}

public int getPennyRollsAdded() {
    return pennyRollsAdded;
}

public void setPennyRollsAdded(int pennyRollsAdded) {
    this.pennyRollsAdded = pennyRollsAdded;
}

public int getNickelRollsAdded() {
    return nickelRollsAdded;
}

public void setNickelRollsAdded(int nickelRollsAdded) {
    this.nickelRollsAdded = nickelRollsAdded;
}

public int getDimeRollsAdded() {
    return dimeRollsAdded;
}

public void setDimeRollsAdded(int dimeRollsAdded) {
    this.dimeRollsAdded = dimeRollsAdded;
}

public int getQuarterRollsAdded() {
    return quarterRollsAdded;
}

public void setQuarterRollsAdded(int quarterRollsAdded) {
    this.quarterRollsAdded = quarterRollsAdded;
}
public String makeChange(int amount) {


    if (amount > 99 || amount < 0) {
        System.out.println("");
    }

    quarters = amount / 25;

    amount = amount % 25;

    dimes = amount / 10;

    amount = amount % 10;

    nickels = amount / 5;

    amount = amount % 5;

    pennies = amount;




    do {

        if (quarters != 0) {
            System.out.print("  Quarters: " + quarters);
        }
        if (dimes != 0) {
            System.out.print("  Dimes: " + dimes);
        }
        if (nickels != 0) {
            System.out.print("  Nickels: " + nickels);
        }
        if (pennies != 0) {
            System.out.println("  Pennies: " + pennies);
        }
    } while (amount > 0 && amount <= 99);

   return "Quarters: " + quarters + "  Dime: " + dimes + "   Nickels: " + nickels + "   Pennies: " + pennies;

}
public void writeReport() {


    System.out.println("Coins Left:");
    System.out.println("Quarters: " + quartersLeft);
    System.out.println("Dimes:    "+ dimesLeft);
    System.out.println("Nickels:  " + nickelsLeft);
    System.out.println("Pennies:  " +penniesLeft);   
    System.out.println("Rolls Added: ");
    System.out.println("Quarters: "+ quarterRollsAdded);
    System.out.println("Dimes:    " + dimeRollsAdded);
    System.out.println("Nickels:  " + nickelRollsAdded);
    System.out.println("Pennies:  " + pennyRollsAdded);





}

}

这是一个单独的驱动程序类来运行程序。

 package changedispenser;

  import java.util.Random;


 public class ChangeDispenserDriver {

public static void main(String[] args) {
    ChangeDispenser changeMachine = new ChangeDispenser();
    Random rand = new Random();
    int amount;
    for (int i = 0; i < 1000; i++) {
        amount = rand.nextInt(99) + 1;
        System.out.println("Amount: " + amount + ": Change = " +   changeMachine.makeChange(amount));
    }
    changeMachine.writeReport();
}
}   
4

2 回答 2

6

您正在另一个方法中创建一个方法,这是不行的:

public static void main(String[] args) {

public String makeChange(int amount) {

这是一个良好的代码格式有帮助的地方。由于缺乏常规和合理的缩进,您的格式不太好。努力格式化你的代码,它会给你带来红利。

例如,您会立即看到:

public static void main(String[] args) {
   public String makeChange(int amount) {
     //...
   }

   // ...

}

...您正在嵌套方法。


编辑

关于您最新的代码,我不能说我已经完成了所有这些,但这非常危险:

  do {
     if (quarters != 0) {
        System.out.print("  Quarters: " + quarters);
     }
     if (dimes != 0) {
        System.out.print("  Dimes: " + dimes);
     }
     if (nickels != 0) {
        System.out.print("  Nickels: " + nickels);
     }
     if (pennies != 0) {
        System.out.println("  Pennies: " + pennies);
     }
  } while (amount > 0 && amount <= 99);

您的循环取决于将数量更改为允许循环结束的值,但是您实际上在哪里更改了循环的数量?如果您不更改循环内的数量,它将如何退出循环。你没有,所以循环可以(并且确实)永远循环。

于 2013-10-30T02:46:24.407 回答
0

气垫船是对的,你修复它的方法是将它们分开

public static void main (String[]args){
     System.out.println(makeChange(5));
}

public String makeChange(int amount){
    ....
}
于 2013-10-30T02:50:28.180 回答