//从键盘上输入一件物品的价格(范围是:0.10~5.00元),假设用户支付了一张5元的纸币
//请列出一种找零钱的方案,使得纸币及硬币的个数最少。import java.io.*;
import java.lang.Throwable.*;
class MyException extends Exception{
public MyException(){
super("输入的价格有误");
}
}public class Money
{
public static double money( double value)throws
MyException{
if(value<0.10||value>5.00)
throw new MyException();
value=5-value;
if(value>=2)
{
System.out("请先收好2元零钱!");
value=value-2;
}
else if(value>=1)
{System.out("请先收好1元零钱!");
value=value-1;
}
else if(value>0.5)
{System.out("请先收好0.5元零钱!");
value=value-0.5;
}
else if(value>=0.2)
{System.out("请先收好0.2元零钱!");
value=value-0.2;
}
else
{System.out("请收好0.1元零钱!");}
return(value);
}
public static void main(String args[])
{
double value=0,money;
int n=5;
try{
System.out.println("请输入物品的价格 $=:");
BufferedReader br=
new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
value=Integer.parseInt(s);
money=money(value);
}
catch(MyException e)
{
System.out.println(e.toString());
System.exit(-1);
}
System.out.println("找回的零钱为"+money);
}
}
//请列出一种找零钱的方案,使得纸币及硬币的个数最少。import java.io.*;
import java.lang.Throwable.*;
class MyException extends Exception{
public MyException(){
super("输入的价格有误");
}
}public class Money
{
public static double money( double value)throws
MyException{
if(value<0.10||value>5.00)
throw new MyException();
value=5-value;
if(value>=2)
{
System.out("请先收好2元零钱!");
value=value-2;
}
else if(value>=1)
{System.out("请先收好1元零钱!");
value=value-1;
}
else if(value>0.5)
{System.out("请先收好0.5元零钱!");
value=value-0.5;
}
else if(value>=0.2)
{System.out("请先收好0.2元零钱!");
value=value-0.2;
}
else
{System.out("请收好0.1元零钱!");}
return(value);
}
public static void main(String args[])
{
double value=0,money;
int n=5;
try{
System.out.println("请输入物品的价格 $=:");
BufferedReader br=
new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
value=Integer.parseInt(s);
money=money(value);
}
catch(MyException e)
{
System.out.println(e.toString());
System.exit(-1);
}
System.out.println("找回的零钱为"+money);
}
}
解决方案 »
- J2SE的关于布局管理器的疑惑
- 错误: 找不到或无法加载主类-------这是什么错误,怎么解决,我用的是myeclipse
- Ant不支持JDK1.6的问题
- 通用接口:根据XML操作类型和SQL语句返回数据
- 关于安装netbeans的问题
- java初学者
- 大家有没有<<thinking in java>><<data structures,algorithms,applications in c++>>
- ToolBar里如何实现下拉式菜单,就像IE里面的后退按钮一样旁边有一个向下的箭头?
- 请教高手
- 寻找能共同学习的人
- 关于 jfilechooser的监听机制
- 请高手留一"邮编区号查询系统"源程序谢谢
public static double money( double value)throws
MyException{
if(value <0.10 ¦ ¦value>5.00)
throw new MyException();
value=5-value;
double value1 = value;
while(value>0) { if(value>=2)
{
System.out("请先收好2元零钱!");
value=value-2;
}
else if(value>=1)
{System.out("请先收好1元零钱!");
value=value-1;
}
else if(value>0.5)
{System.out("请先收好0.5元零钱!");
value=value-0.5;
}
else if(value>=0.2)
{System.out("请先收好0.2元零钱!");
value=value-0.2;
}
else
{System.out("请收好0.1元零钱!");
}
return(value1); }
public class test {
public static void main(String []args){
test.money(4.10f);
}
public static void money(float money){
int temp = (int)(money*100);
System.out.println("找零:"+money);
System.out.println("找零:"+temp);
System.out.println("二元:"+temp/200+"张");
temp=temp%200;
System.out.println("一元:"+temp/100+"张");
temp=temp%100;
System.out.println("五角:"+temp/50+"枚");
temp=temp%50;
System.out.println("二角:"+temp/20+"枚");
temp=temp%20;
System.out.println("一角:"+temp/10+"枚");
//temp=temp%10;
}
}
请先收好2元零钱!
应该是找零4.0,而不是2,所以得通过循环判断,我写了一个简化版,没能处理误差(只精确到毛).package other;public class Money {
public static double money(double value) throws MyException {
if (value <= 0 || value > 5.0) {
throw new MyException();
}
value = 5 - value;
for (; value > 0;) {
if (value >= 2) {
value -= 2;
System.out.println(2);
} else if (value >= 1) {
System.out.println(1);
value -= 1;
} else if (value >= 0.5) {
System.out.println(0.5);
value -= 0.5;
} else if (value >= 0.2) {
System.out.println(0.2);
value -= 0.2;
} else(value >= 0.1) {
value -= 0.1;
System.out.println(0.1);
}
}
return value;
} public static void main(String[] args) {
try {
money(4.70);
} catch (MyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static double money(double value) throws MyException {
if (value <= 0 || value > 5.0) {
throw new MyException();
}
value = 5 - value;
for (; value > 0;) {
if (value >= 2) {
value -= 2;
System.out.println(2);
} else if (value >= 1) {
System.out.println(1);
value -= 1;
} else if (value >= 0.5) {
System.out.println(0.5);
value -= 0.5;
} else if (value >= 0.2) {
System.out.println(0.2);
value -= 0.2;
} else{
value -= 0.1;
System.out.println(0.1);
}
}
return value;
} public static void main(String[] args) {
try {
money(4.75);
} catch (MyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}