Java 无法获取输入的正确输出。11

Java 无法获取输入的正确输出。11,java,floating-point,modulus,Java,Floating Point,Modulus,我在学校有作业,我必须显示用户输入的小于1.00但大于0的金额的正确变化。除了在第十位有1或6的两位数以外,每个数字都有效。例如.11、.16、.21、.26等 这是我的密码 import java.util.Scanner; public class AmountChange { public static void main(String[] args) { // double amt; int cents, quarter, dime,

我在学校有作业,我必须显示用户输入的小于1.00但大于0的金额的正确变化。除了在第十位有1或6的两位数以外,每个数字都有效。例如.11、.16、.21、.26等

这是我的密码

import java.util.Scanner;

public class AmountChange
{
   public static void main(String[] args)
   {
      //
      double amt; 
      int cents, quarter, dime, nickle, penny;

      Scanner keyboard = new Scanner(System.in);

      //To get the users input
      System.out.println("Change in Coins");
      System.out.println("---------------");
      System.out.println("Enter the amount less than $1.00, " +
                         "\nbut more than zero.");
      System.out.print("\nEnter amount: ");
      amt = keyboard.nextDouble();

      //Loop for incorrect input
      while ( amt < 0 || amt > 1.00 )
      {
         System.out.println("Please enter the amount less than $1.00,"  
                           + "\nbut more than zero.");
         System.out.print("\nRe-enter amount: ");
         amt = keyboard.nextDouble();
      }

      // 
      cents = (int)( amt * 100 + .1 );

      quarter = cents/25;
      cents %= 25;

      dime = cents/10;
      cents %= 10;

      nickle = cents/5;
      cents %= 5;

      penny = cents;

      // ----------------------------------------------------------
      if (quarter > 1)
      {
         System.out.print("\nYou will need " + quarter + " quarters, ");
      }
      else if (quarter == 1)
      {
         System.out.print("\nYou will need " + quarter + " quarter ,");
      }
      else 
      {
         System.out.print("\nYou will need no quarters, ");
      }

      // ----------------------------------------------------------
      if (dime > 1)
      {
         System.out.print(dime + " dimes, ");
      }
      else if (dime == 1)
      {
         System.out.print(dime + " dime, ");
      }
      else 
      {
         System.out.print("no dimes, ");
      }

      // ----------------------------------------------------------
      if (nickle > 1)
      {
         System.out.print(nickle + " nickles, ");
      }
      else if (nickle == 1)
      {
         System.out.print(nickle + " nickle, ");
      }
      else 
      {
         System.out.print("no nickles, ");
      }

      // ----------------------------------------------------------
      if (penny > 1)
      {
         System.out.print("and " + penny + " pennies.");
      }
      else if (quarter == 1)
      {
         System.out.print("and " + penny + " penny.");
      }
      else 
      {
         System.out.print("and no pennies.");
      }      
   }
}
import java.util.Scanner;
公共类数量变化
{
公共静态void main(字符串[]args)
{
//
双金额;
一分、二角五分、一角、五分、一便士;
扫描仪键盘=新扫描仪(System.in);
//获取用户的输入
System.out.println(“硬币兑换”);
System.out.println(“--------------”;
System.out.println(“输入少于$1.00的金额,”+
“\n但大于零。”);
系统输出打印(“\n输入金额:”);
amt=键盘.nextDouble();
//不正确输入的循环
而(金额<0 | |金额>1.00)
{
System.out.println(“请输入少于$1.00的金额,”
+“\n但大于零。”);
系统输出打印(“\n重新输入金额:”);
amt=键盘.nextDouble();
}
// 
美分=(整数)(金额*100+1);
季度=美分/25;
美分%=25;
一角硬币=美分/10;
美分%=10;
镍币=美分/5;
美分%=5;
便士=美分;
// ----------------------------------------------------------
如果(季度>1)
{
System.out.print(“\n您将需要“+季度+”季度“);
}
否则如果(季度==1)
{
System.out.print(“\n您需要“+quarter+”quarter“);
}
其他的
{
System.out.print(“\n您不需要硬币,”);
}
// ----------------------------------------------------------
如果(dime>1)
{
系统输出打印(一角+一角);
}
否则如果(dime==1)
{
系统输出打印(dime+“dime”);
}
其他的
{
系统输出打印(“无一角硬币”);
}
// ----------------------------------------------------------
如果(镍>1)
{
系统输出打印(镍币+镍币);
}
否则如果(镍币=1)
{
系统输出打印(nickle+“nickle”);
}
其他的
{
系统输出打印(“无刻痕”);
}
// ----------------------------------------------------------
如果(便士>1)
{
系统输出打印(“和“+便士+”便士“);
}
否则如果(季度==1)
{
系统输出打印(“和“+便士+”便士“);
}
其他的
{
系统输出打印(“并且没有硬币”);
}      
}
}

啊,剪贴的乐趣:-)

使用函数来输出提示并接受输入使得用户输入代码更易于维护,因为您只需要在一个地方更改交互

真正的节省是
mkTxt()
函数,它可以为您提供一个字符串,该字符串可以自动神奇地根据硬币数量进行调整。它去掉了
main()
中大量的
if/then/else
块,在一定程度上提高了可读性


如果你发现自己做了很多次类似的事情,但却有不同的价值观,那就需要将其转换为某种描述的函数或循环。

啊,剪切和粘贴的乐趣:-)

使用函数来输出提示并接受输入使得用户输入代码更易于维护,因为您只需要在一个地方更改交互

真正的节省是
mkTxt()
函数,它可以为您提供一个字符串,该字符串可以自动神奇地根据硬币数量进行调整。它去掉了
main()
中大量的
if/then/else
块,在一定程度上提高了可读性


如果你发现自己做了很多次类似的事情,但却有不同的价值观,那就需要将其转换为某种描述的函数或循环。

啊,剪切和粘贴的乐趣:-)

使用函数来输出提示并接受输入使得用户输入代码更易于维护,因为您只需要在一个地方更改交互

真正的节省是
mkTxt()
函数,它可以为您提供一个字符串,该字符串可以自动神奇地根据硬币数量进行调整。它去掉了
main()
中大量的
if/then/else
块,在一定程度上提高了可读性


如果你发现自己做了很多次类似的事情,但却有不同的价值观,那就需要将其转换为某种描述的函数或循环。

啊,剪切和粘贴的乐趣:-)

使用函数来输出提示并接受输入使得用户输入代码更易于维护,因为您只需要在一个地方更改交互

真正的节省是
mkTxt()
函数,它可以为您提供一个字符串,该字符串可以自动神奇地根据硬币数量进行调整。它去掉了
main()
中大量的
if/then/else
块,在一定程度上提高了可读性


如果你发现自己做了很多次类似的事情,但却有不同的值,那就需要将其转换为某种描述的函数或循环。

你只需要输入一个简单的错误! 更改:

对,


你只是有一个简单的打字错误! 更改:

对,


你只是有一个简单的打字错误! 更改:

对,


你只是有一个简单的打字错误! 更改:

对,

if (penny > 1)
{
    System.out.print("and " + penny + " pennies.");
}
else if (quarter == 1)  // <<<<< LOOK HERE !!!
{
     System.out.print("and " + penny + " penny.");
}
else 
{
     System.out.print("and no pennies.");
}      
import java.util.Scanner;

public class Test
{
    static double getAmount(Scanner keyboard) {
        System.out.println("Enter the amount between zero and $1.00.");
        System.out.print("\nEnter amount: ");
        return keyboard.nextDouble();
    }

    static String mkeTxt (int val, String prefix, String singular, String plural) {
        if (val == 0)
            return prefix + "no " + plural;
        if (val == 1)
            return prefix + "1 " + singular;
        return prefix + val + " " + plural;
    }

    public static void main(String[] args)
    {
        double amt; 
        int cents, quarter, dime, nickle, penny;

        Scanner keyboard = new Scanner(System.in);

        System.out.println("Change in Coins");
        System.out.println("---------------");
        amt = getAmount(keyboard);
        while ( amt < 0 || amt > 1.00 )
            amt = getAmount(keyboard);

        cents = (int)( amt * 100 + .1 );
        quarter = cents/25;
        cents %= 25;
        dime = cents/10;
        cents %= 10;
        nickle = cents/5;
        cents %= 5;
        penny = cents;

        System.out.print("\nYou will need ");
        System.out.print(mkeTxt(quarter,"", "quarter", "quarters"));
        System.out.print(mkeTxt(dime,", ", "dime", "dimes"));
        System.out.print(mkeTxt(nickle,", ", "nickle", "nickles"));
        System.out.print(mkeTxt(penny," and ", "penny", "pennies"));
        System.out.println(".");
    }
}
else if (quarter == 1){
    System.out.print("and " + penny + " penny.");
} else {
    System.out.print("and no pennies.");
}
else if (penny == 1){
    System.out.print("and " + penny + " penny.");
} else {
    System.out.print("and no pennies.");
}