我有这个,但有一个错误,我不明白:(。我对Java相对较新。
package hw;
import java.util.Scanner;
public class Problem1
{
public static void main (String [] args)
{
int cost; int number; double cost_unit; double total;
Scanner entrada = new Scanner(System.in);
System.out.println("Please enter the cost of the product.");
cost = entrada.nextInt();
while (cost>0){
System.out.println("Please enter the amount of units to be sold");
number = entrada.nextInt();
if (number>0);
cost_unit = cost * 1.4;
total = cost_unit*number;
System.out.printf("Cost per unit will be $ %d\n",cost_unit);
System.out.printf("Cost per unit will be $ %d\n",total);
}
}
}
//我只想让用户输入产品的成本,给出一些订购单位,我希望程序找出产品的最终价格,获利40%。
答案 0 :(得分:2)
在printf中,%d
用于有符号十进制整数,而cost_unit
和total
是双精度数。您应该使用%f
代替。
System.out.printf("Cost per unit will be $ %f\n",cost_unit);
System.out.printf("Cost per unit will be $ %f\n",total);
答案 1 :(得分:2)
尝试并实际描述问题:
javac没有编译吗?这是一个语法问题。
程序的行为是否与您的预期不符?哪些部分没有表现?这是一个逻辑问题。
如果没有充分描述问题,您怎么能指望您或其他人轻易找到错误?当你继续学习有关编程的更多知识时,你将需要这种技能。
回到代码中查找问题:
cost_unit = cost * 14
您可能希望将cost_unit命名为retail_unit,因为这是零售价格。成本*利润率=零售价,没有?答案 2 :(得分:1)
一些提示:
while (cost>0)
你真的想要一个while
循环吗?您似乎正在检查,如果费用为正。
if (number>0);
此if
语句没有任何用处。
答案 3 :(得分:1)
似乎是“if(number> 0);”声明无济于事。
尝试将其更改为:
if (number>0) {
cost_unit = cost * 1.4;
total = cost_unit*number;
System.out.printf("Cost per unit will be $ %d\n",cost_unit);
System.out.printf("Cost per unit will be $ %d\n",total);
}
编辑:此外,如果指定的(第一)成本是>,似乎存在无限循环。 0,因为你不在循环中改变它(成本)。
答案 4 :(得分:1)
如果不深入研究代码,引起我注意的一件事就是:
if (number>0);
cost_unit = cost * 1.4;
total = cost_unit*number;
可能你会喜欢这个:
if (number>0) {
cost_unit = cost * 1.4;
total = cost_unit*number;
}
顺便说一句,我以前看过这个.....但我不太确定在哪里......
答案 5 :(得分:1)
变化
if (number>0);
cost_unit = cost * 1.4;
total = cost_unit*number;
到
if (number>0) {
cost_unit = cost * 1.4;
total = cost_unit*number;
}
答案 6 :(得分:1)
如果您在打印结果时研究了documentation的格式语法,您将意识到要使用整数格式(%d)格式化为浮点数(%f) )。
答案 7 :(得分:1)
最后两行应该是:
System.out.printf("Cost per unit will be $ %f\n", cost_unit);
System.out.printf("Total cost will be $ %f\n", total);
答案 8 :(得分:1)
在这里,试试这个:
我认为它几乎可以满足您的需求。
package hw;
import java.util.Scanner;
public class Problem1 {
public static void main (String [] args) {
int cost;
int number;
double cost_unit = 0;
double total = 0;
Scanner entrada = new Scanner(System.in);
System.out.println("Please enter the cost of the product.");
cost = entrada.nextInt();
System.out.println("Please enter the amount of units to be sold");
number = entrada.nextInt();
cost_unit = cost * 1.4;
if (number>0) {
total = cost_unit*number;
}
System.out.printf("Cost per unit will be $ %f\n",cost_unit);
System.out.printf("Total cost will be $ %f\n",total);
}
}
尝试一下,看看它是否有效。你有没有机会参加ITAM?
修改强>
关于你原来的循环是正确的。只需要包围您想要重复的代码,并添加条件退出。
创建扫描仪后的类似情况(几乎与第一次尝试时的方式相同):
while( cost > 0 ) {
System.out.println("Please enter the cost of the product ( 0 to exit the progam");
cost = entrada.nextInt();
.........
.........
.........
System.out.printf("Total cost will be $ %f\n",total)
}
这将在大括号之间重复代码,而成本大于0。
当然你应该改变成本的初始值,否则它不会在第一次进入lopp时,也许你应该在每次迭代之前清理这些值。