我本周刚刚开始学习Java课程,我们的第一个项目将于周日到期,我遇到了一些麻烦。该项目的基本要点是,我们必须创建一个程序来计算购买后返回的更改,并告诉用户有多少季度,硬币和镍币组成了所述更改。
问题在于,教师希望输入采用“付费:成本”的形式,这对任何原始类型都不适合。因此,他建议使用字符串和子字符串来分隔“付款”字样。和'成本'来自结肠,但我不知道该怎么做。 '支付'和'成本'也必须是特定范围内的数字,我认为这是if-else语句的用途。问题是我没有牢固掌握语法,需要一些帮助来设置它。
以下是他为该项目逐字提供的说明,以及我现在的代码。请记住,这是宝贝的第一个项目,所以请怜悯。任何帮助表示赞赏。
说明:
1。)您必须检查用户输入的数据是否遵循所需的语法。如果没有,您的程序必须显示错误对话框并退出。仅当以下所有条件都成立时,输入才有效:
输入的格式为pay:cost,其中pay和cost都是整数。
支付是一整数美元(100,200,300,......)。
支付小于或等于900美分。
支付大于或等于成本。
费用大于或等于5,只能用四分之一,硬币和零币表示(即5,10,15,... 95,100,105,... 890,895或900)。
2。)如果输入有效,那么您的程序必须显示一个消息对话框,显示提供正确更改量所需的最小镍币数,硬币数和分数,其中change = pay - cost。
3。)当用户关闭输出消息对话框时,您的程序必须退出。
4.。)您只能导入javax.swing.JOptionPane
代码:
import javax.swing.JOptionPane;
public class ChangeMakerWindow {
public static void main(String[] args) {
String amountString = JOptionPane.showInputDialog("Enter the amount you pay in cents,\n" +
"followed by the cost of the item in cents.\n" +
"The input must be in the form: pay:cost,\n" +
"where pay is a whole number (100, 200, 300, etc) to a maximum of 900,\n" +
"and cost is a multiple of five (5, 10, 15, etc) to a maximum of 900");
int pay, cost, change, originalChange, quarters, dimes, nickles;
change = pay - cost;
originalChange = change;
quarters = change / 25;
change = change % 25;
dimes = change / 10;
change = change %10;
nickles = change / 5;
JOptionPane.showMessageDialog(null, originalChange +
" cents in coins can be given as:\n" +
quarters + " quarters\n" +
dimes + " dimes\n" +
nickles + " nickles\n");
System.exit(0);
}
}
答案 0 :(得分:0)
使用String.split(":")来支付和支付两个单独的项目。然后使用Integer.parseInt(String s)转换为整数。
public static void main(String[] args) {
String amountString = JOptionPane.showInputDialog("Enter the amount you pay in cents,\n" +
"followed by the cost of the item in cents.\n" +
"The input must be in the form: pay:cost,\n" +
"where pay is a whole number (100, 200, 300, etc) to a maximum of 900,\n" +
"and cost is a multiple of five (5, 10, 15, etc) to a maximum of 900");
int pay, cost, change, originalChange, quarters, dimes, nickles;
//this is the real meat of the solution
String[] input = amountString.split(":"); //this creates a String array with 2 parts {"pay", "cost"}
pay = Integer.parseInt(input[0]); //This method (and the next) parse as int.
cost = Integer.parseInt(input[1]);
change = pay - cost;
originalChange = change;
quarters = change / 25;
change = change % 25;
dimes = change / 10;
change = change %10;
nickles = change / 5;
JOptionPane.showMessageDialog(null, originalChange +
" cents in coins can be given as:\n" +
quarters + " quarters\n" +
dimes + " dimes\n" +
nickles + " nickles\n");
System.exit(0); //Note, unlike C++ This is unnecessary.
//When the method ends there is no need to call System.exit(0);
//The only time to use System.exit(0) is when it's outside of control flow.
//The system was already going to end from the main method anyway so it doesn't change anything.
//Pro tip: using return; (with nothing there) will also do the same thing.
}
希望这有帮助。
答案 1 :(得分:0)
分割付费的第一步:成本是使用string.split()方法。
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
if-else语句的正确语法是
if (pay > minimum_range || pay < maximum_range){
do things
else{
do other things
}
上述声明如下:&#34;如果薪酬大于最小范围或小于最大范围,则执行操作。
要检查它们是否具有以下语法,您需要执行以下操作。
检查唯一的字符&#39;你在输入字符串中有0-9和冒号。你可以使用正则表达式来做到这一点,但你可能太新了,所以我建议使用一个简单的for循环遍历字符串。
for(int i = 0; i < str.length(); i++){
if str.charAt(i) != Digit or Colon
print error message
}
之后,您可以支付费用,并找到相应的更改&#39;。然后你可以从最大量(四分之一)开始循环并继续减去X个季度,直到你不能再这样做了。然后减去硬币,然后减去镍币,然后减去便士,直到你完成。
祝你好运!答案 2 :(得分:0)
如果您想将pay:cost
与pay
和cost
与substring
分开,则必须首先了解:
的位置。因此,要获得:
所在的位置,您可以在indexOf()
中使用String
函数,在我的示例中,myString
。
String myString = "pay:cost";
int position = myString.indexOf("%");
现在你可以substring
String
你拥有的String pay = "";
String cost = "";
pay = myString.substring(0,position - 1);
cost = myString.substring(position + 1, myString.length());
。我将创建两个变量来存储生成的两个部分。
split
注意:如果您想要更清楚,但可以使用Strings
功能。它创建了一个:
数组,作为String[] strings = myString.split(":");
pay = strings[0]; --> "pay"
cost = strings[1]; --> "cost"
的引用,如下所示:
Strings
之后,如果您想将ints
转换为int payInt = Integer.parseInt(pay);
int costInt = Integer.parseInt(cost);
,您只需要这样做:
{{1}}
如果您对我上面提到的代码有疑问,请告诉我。
我希望它会对你有所帮助!