Java 需要帮助格式化开关方法调用的输出吗
这是针对我正在学习的一个类,其中我们被指示创建一个具有两个参数(price和state)的方法,然后让用户输入任何价格,该方法将针对它运行,并输出来自多个状态的成本。我为自己找到了让它发挥最大作用的方法而感到自豪。然而,有几个小问题我需要帮助解决Java 需要帮助格式化开关方法调用的输出吗,java,Java,这是针对我正在学习的一个类,其中我们被指示创建一个具有两个参数(price和state)的方法,然后让用户输入任何价格,该方法将针对它运行,并输出来自多个状态的成本。我为自己找到了让它发挥最大作用的方法而感到自豪。然而,有几个小问题我需要帮助解决 它只有在输入整数时才有效 它超过两个小数位 它显示“case”值,即使我没有要求它 在显示代码之前,下面是一个示例输出。 输入甜甜圈的价格: 5 下面是每个州的费用 KY-5.3 ky OH-5.2875 哦 IN-5.35 在 TN-5.35 t
- 它只有在输入整数时才有效
- 它超过两个小数位
- 它显示“case”值,即使我没有要求它
输入甜甜圈的价格:
5
下面是每个州的费用
KY-5.3
ky
OH-5.2875
哦
IN-5.35
在
TN-5.35
tn
FL-5.3
fl
WF-5.3
wf
谢谢大家!我综合了你的许多建议,得到了我所需要的。我喜欢这个地方
import java.text.DecimalFormat;
import java.util.Scanner;
public class TaxCalculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter price of donut: ");
double price = input.nextDouble();
String[] state=new String[6];
state[0]="ky";
state[1]="oh";
state[2]="in";
state[3]="tn";
state[4]="fl";
state[5]="wv";
System.out.println("Here's how much your donut would cost in each state");
addTax(price,state[0]);
addTax(price,state[1]);
addTax(price,state[2]);
addTax(price,state[3]);
addTax(price,state[4]);
addTax(price,state[5]);
}
public static String addTax( double price, String state ) {
String result=("");
DecimalFormat money=new DecimalFormat("$#,###.00");
switch (state) {
case "ky": System.out.println("KY - " + money.format((price*.06)+price));
break;
case "oh": System.out.println("OH - " + money.format((price*.0575)+price));
break;
case "in": System.out.println("IN - " + money.format((price*.07)+price));
break;
case "tn": System.out.println("TN - " + money.format((price*.07)+price));
break;
case "fl": System.out.println("FL - " + money.format((price*.06)+price));
break;
case "wv": System.out.println("WV - " + money.format((price*.06)+price));
break;
default: System.out.println("Invalid");
break;
}
return state;
}
}
对于第1点,您正在调用
input.nextInt()
对于double,您只需调用
input.nextDouble()
如果你想要两位小数,你可以像这样使用十进制格式
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
您可以通过执行价格*1.06等简化价格计算
addTax方法返回一个字符串,然后返回状态,这就是为什么打印点1的大小写值的原因,您正在调用
input.nextInt()
对于double,您只需调用
input.nextDouble()
如果你想要两位小数,你可以像这样使用十进制格式
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
您可以通过执行价格*1.06等简化价格计算
addTax方法返回一个字符串,然后返回state,这就是为什么打印case值而不是:
System.out.println(addTax(price,state[0]));
case "ky": System.out.println("KY - " + ((price*.06)+price));
break;
return state;
这样做:
System.out.printf("%.1d", addTax(price,state[0]));
case "ky": String result = "KY - " + ((price*.06)+price);
break;
return result;
或者类似的东西。这也是为什么在返回时打印state
,并在每次调用时使用两个System.out.println
。调用Double.parseDouble
而不是Integer.parseInt
,您可以输入Double。而不是:
System.out.println(addTax(price,state[0]));
case "ky": System.out.println("KY - " + ((price*.06)+price));
break;
return state;
这样做:
System.out.printf("%.1d", addTax(price,state[0]));
case "ky": String result = "KY - " + ((price*.06)+price);
break;
return result;
或者类似的东西。这也是为什么在返回时打印state
,并在每次调用时使用两个System.out.println
。调用Double.parseDouble
而不是Integer.parseInt
,您可以输入Double。1)修改您的输入,以采用nextDouble()
2) 在打印语句中使用String.format
,如下所示:
System.out.println("KY - " + String.format("%.2f", ((price * 0.6) + price)));
3) 调用addTax
方法时删除System.out.println
——因为您已经在使用此方法进行打印了1)修改您的输入以获取nextDouble()
2) 在打印语句中使用String.format
,如下所示:
System.out.println("KY - " + String.format("%.2f", ((price * 0.6) + price)));
3) 调用
addTax
方法时删除System.out.println
——因为您已经在使用此方法进行打印了1)请尝试double price=input.nextDouble()代码>nextInt()可能会在从输入获取整数值并分配给double时引发inputMissMatchException
2) 您可以使用DecimalFormat df=new DecimalFormat(“#.##”)
然后System.out.println(df.format(value))
将双精度值四舍五入到2个小数位
3) 从main方法中删除所有print语句,因为返回值是State,它将打印main中所有print语句的状态值 1)试试double price=input.nextDouble()代码>nextInt()可能会在从输入获取整数值并分配给double时引发inputMissMatchException
2) 您可以使用DecimalFormat df=new DecimalFormat(“#.##”)
然后System.out.println(df.format(value))
将双精度值四舍五入到2个小数位
3) 从main方法中删除所有print语句,因为返回值是State,它将打印main中所有print语句的状态值 干得好,我想建议一种更简洁的写作方法:
public static void main(String[] args){
System.out.println("Enter price of donut: ");
Scanner input = new Scanner(System.in);
double price = input.nextInt();
Map<String, Double> multipliers = new LinkedHashMap<>();
multipliers.put("KY", .06);
multipliers.put("OH", .0575);
multipliers.put("IN", .07);
multipliers.put("TN", .07);
multipliers.put("FL", .06);
multipliers.put("WV", .06);
System.out.println("Here's how much your donut would cost in each state");
multipliers.forEach((x, y) -> System.out.println(x + " - " + (price + (price * y))));
}
publicstaticvoidmain(字符串[]args){
System.out.println(“输入油炸圈饼的价格:”);
扫描仪输入=新扫描仪(System.in);
双倍价格=input.nextInt();
映射乘数=新LinkedHashMap();
乘数。put(“KY”,0.06);
乘数。put(“OH”,0.0575);
乘数.put(“IN”,.07);
乘数.put(“TN”,.07);
乘数.put(“FL”,.06);
乘数.put(“WV”,.06);
System.out.println(“以下是您的油炸圈饼在每个州的价格”);
乘法器.forEach((x,y)->System.out.println(x+“-”+(price+(price*y));
}
干得好,我想建议一种更简洁的编写方法:
public static void main(String[] args){
System.out.println("Enter price of donut: ");
Scanner input = new Scanner(System.in);
double price = input.nextInt();
Map<String, Double> multipliers = new LinkedHashMap<>();
multipliers.put("KY", .06);
multipliers.put("OH", .0575);
multipliers.put("IN", .07);
multipliers.put("TN", .07);
multipliers.put("FL", .06);
multipliers.put("WV", .06);
System.out.println("Here's how much your donut would cost in each state");
multipliers.forEach((x, y) -> System.out.println(x + " - " + (price + (price * y))));
}
publicstaticvoidmain(字符串[]args){
System.out.println(“输入油炸圈饼的价格:”);
扫描仪输入=新扫描仪(System.in);
双倍价格=input.nextInt();
映射乘数=新LinkedHashMap();
乘数。put(“KY”,0.06);
乘数。put(“OH”,0.0575);
乘数.put(“IN”,.07);
乘数.put(“TN”,.07);
乘数.put(“FL”,.06);
乘数.put(“WV”,.06);
System.out.println(“以下是您的油炸圈饼在每个州的价格”);
乘法器.forEach((x,y)->System.out.println(x+“-”+(price+(price*y));
}
double price=input.nextInt()代码>-->double price=input.nextDouble()代码>System.out.println(addTax(价格,状态[0])代码>-->addTax(价格,状态[0])代码>double price=input.nextInt()代码>-->double price=input.nextDouble()代码>System.out.println(addTax(价格,状态[0])代码>-->addTax(价格,状态[0])代码>第2点将直接在-%.2f
中打印,并附上价格。第三点是OP在调用该方法时正在打印,然后又在该方法中打印。@pruntlar找到了您。你说得对。忘记添加格式,是,返回值为状态。不管怎样,它都会把州打印出来。更新它。谢谢,第二点可以