gpt4 book ai didi

java - 遇到 double 问题

转载 作者:行者123 更新时间:2023-11-29 09:39:30 27 4
gpt4 key购买 nike

经过长时间的努力,我终于(差不多)完成了我的java菜单程序。但是,我无法让我的返回更改功能在我的代码末尾工作。它给出了非常奇数的数字。有什么想法吗?

代码:

import java.io.*;
import java.text.*;
import java.util.*;

public class JavaBurger
{
public static double amountowed = 0;
public static double amount;
public static double amount1 = 0;
public static double amount2 = 0;
public static double amount3 = 0;
public static double amount4 = 0;
public static double amount5 = 0;
public static double amount6 = 0;
public static double amount7 = 0;
public static double amount8 = 0;
public static double amount9 = 0;
public static double amount10 = 0;


static ArrayList MenuItems = new ArrayList();

public static void main(String[] args)
{
InputStreamReader inp = null;
BufferedReader input = null;
int nOption = 0;
DecimalFormat x = new DecimalFormat("###.##");


try
{
inp = new InputStreamReader(System.in);
input = new BufferedReader(inp);
while(true)
{
System.out.println("Choose a Menu Option");
System.out.println("1. Burger - 13.49");
System.out.println("2. Pasta - 16.79");
System.out.println("3. Salad - 13.49");
System.out.println("4. Salmon - 18.99");
System.out.println("5. Chicken - 16.99");
System.out.println("6. Nachos - 13.99");
System.out.println("7. Soup - 6.99");
System.out.println("8. Fajitas - 18.49");
System.out.println("9. Ribs - 23.99");
System.out.println("10. Calamari-9.99");
System.out.println("11. Clear Order");
System.out.println("12. Finish Order");
System.out.println("\nChoose an option(1-12) >> ");
System.out.println("Subtotal: $" + x.format(amount));
System.out.println("Total: $" + x.format(amount * 1.13));
System.out.println("For error correction, choose an option and enter a negative value to void the item.");

nOption = Integer.parseInt(input.readLine());

switch(nOption)
{
case 1:
Burger(input);
break;
case 2:
Pasta(input);
break;
case 3:
Salad(input);
break;
case 4:
Salmon(input);
break;
case 5:
Chicken(input);
break;
case 6:
Nachos(input);
break;
case 7:
Soup(input);
break;
case 8:
Fajitas(input);
break;
case 9:
Ribs(input);
break;
case 10:
Calamari(input);
break;
case 11:
Clear(input);
break;
case 12:
Finish(input);
break;

}
}
}
catch(Exception exp)
{
}
}

private static void Burger(BufferedReader input) throws IOException
{

while(true)
{

System.out.println("How many Burgers would you like? ");
int a = Integer.parseInt(input.readLine());

double aaa = Math.pow(1 + a, a);
amount1 = (a * 13.49);
amount += amount1;


break;
}
}

private static void Pasta(BufferedReader input) throws IOException
{
while(true)
{

System.out.println("How many orders of Pasta would you like? ");
int b = Integer.parseInt(input.readLine());

double bbb = Math.pow(1 + b, b);
amount2 = (bbb * 16.79);
amount += amount2;


break;
}
} private static void Salad(BufferedReader input) throws IOException
{
while(true)
{

System.out.println("How many Salads would you like? ");
int c = Integer.parseInt(input.readLine());

double ccc = Math.pow(1 + c, c);
amount3 = (ccc * 13.49);
amount += amount3;


break;
}
} private static void Salmon(BufferedReader input) throws IOException
{

while(true)
{

System.out.println("How many orders of Salmon would you like? ");
int d = Integer.parseInt(input.readLine());

double ddd = Math.pow(1 + d, d);
amount4 = (ddd * 18.99);
amount += amount4;


break;
}
} private static void Chicken(BufferedReader input) throws IOException
{

while(true)
{

System.out.println("How many orders of Chicken would you like? ");
int e = Integer.parseInt(input.readLine());

double eee = Math.pow(1 + e, e);
amount5 = (eee * 16.99);
amount += amount5;


break;
}
} private static void Nachos(BufferedReader input) throws IOException
{

while(true)
{

System.out.println("How many orders of Nachos would you like? ");
int f = Integer.parseInt(input.readLine());

double fff = Math.pow(1 + f, f);
amount6 = (fff * 13.99);
amount += amount6;

break;
}
} private static void Soup(BufferedReader input) throws IOException
{
while(true)
{

System.out.println("How many orders of Soup would you like? ");
int g = Integer.parseInt(input.readLine());

double ggg = Math.pow(1 + g, g);
amount7 = (ggg * 6.99);
amount += amount7;

break;
}
} private static void Fajitas(BufferedReader input) throws IOException
{

while(true)
{

System.out.println("How many orders of 2 Fajitas would you like? ");
int h = Integer.parseInt(input.readLine());

double hhh = Math.pow(1 + h, h);
amount8 = (hhh * 18.49);
amount += amount8;

break;
}
} private static void Ribs(BufferedReader input) throws IOException
{

while(true)
{

System.out.println("How many racks of Ribs would you like? ");
int i = Integer.parseInt(input.readLine());

double iii = Math.pow(1 + i, i);
amount9 = (iii * 23.99);
amount += amount9;

break;
}
} private static void Calamari(BufferedReader input) throws IOException
{

while(true)
{

System.out.println("How many orders of Calamari would you like? ");
int j = Integer.parseInt(input.readLine());

double jjj = Math.pow(1 + j, j);
amount10 = (jjj * 9.99);
amount += amount10;

break;
}
} private static void Clear(BufferedReader input) throws IOException
{

while(true)
{

amount = 0;

break;
}
} private static void Finish(BufferedReader input) throws IOException
{

while(true)
{

DecimalFormat x = new DecimalFormat("###.##");
System.out.println("Amount Due");
System.out.println("**********");
System.out.println("Subtotal:" + x.format(amount));
System.out.println("Total:" + x.format(amount * 1.13));
System.out.println("Please enter the amount tendered");
int k = Integer.parseInt(input.readLine());
double kk = Math.pow(1 + k, k);
amountowed = ((amount * 1.13) - kk);
if(amountowed == 0)
{
System.out.println("Thanks for paying with exact change!");
System.exit(0);
}
else if(amountowed < 0)
{
System.out.println("Change due:" + x.format(amountowed * -1.00));
System.exit(0);
}
else
{
System.out.println("Amount still owed:" + x.format(amountowed * -1.00));
}
}
}
}

结果:

Choose a Menu Option
1. Burger - 13.49
2. Pasta - 16.79
3. Salad - 13.49
4. Salmon - 18.99
5. Chicken - 16.99
6. Nachos - 13.99
7. Soup - 6.99
8. Fajitas - 18.49
9. Ribs - 23.99
10. Calamari-9.99
11. Clear Order
12. Finish Order

Choose an option(1-12) >>
Subtotal: $0
Total: $0
For error correction, choose an option and enter a negative value to void the it
em.
1
How many Burgers would you like?
1
Choose a Menu Option
1. Burger - 13.49
2. Pasta - 16.79
3. Salad - 13.49
4. Salmon - 18.99
5. Chicken - 16.99
6. Nachos - 13.99
7. Soup - 6.99
8. Fajitas - 18.49
9. Ribs - 23.99
10. Calamari-9.99
11. Clear Order
12. Finish Order

Choose an option(1-12) >>
Subtotal: $13.49
Total: $15.24
For error correction, choose an option and enter a negative value to void the it
em.
12
Amount Due
**********
Subtotal:13.49
Total:15.24
Please enter the amount tendered
100
Change due:270481382942152600000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000

为什么我得到的更改到期的古怪数字?

最佳答案

嗯...这里需要下面这行吗?

double kk = Math.pow(1 + k, k);

它完全搞乱了更改计算,因为你为用户输入的 (k) + 1 提供了 k 次方。

如果您想将其更改为 double ,(double)k 即可。当然,对于货币计算,你最好使用:

  1. BigDecimal
  2. 基于分的Integer/Long 计算

关于java - 遇到 double 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16523910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com