问题描述
某商场10年店庆活动,规定消费金额500元以上的部分可以给予95折,消费1000元以上的部分可以给予9折,消费2000元以上的部分可以给予85折。现要求设计一个程序,要求根据用户从键盘输入的商品总价计算出折后价。要求输出格式为:=======================原价:600.00元折后价:595.00元=======================设有一个四位数,它的四位数字分别是ABCD,而其又满足一下条件:ABCD*9=DCBA,试编写一段小程序计算这个四位数究竟是多少。
解决方案
解决方案二:
一般我只写思路..如果你很急就私信我
解决方案三:
publicclassABCDtimes9equalsDCBA{publicstaticvoidmain(finalStringargv[]){intdcba=0;for(intabcd=1000;abcd<=9999;abcd++){
dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;if(abcd*9==dcba){System.out.println(abcd+"*9="+dcba);}}}}
1089*9=9801
框架如上,最有用的那行代码按下Ctrl+A可以看到,最好自己考虑一下再看答案参考:http://zhidao.baidu.com/link?url=_ubJJ2RDt72JZqe5-hHKrsKcpbbNCvaphf4Z7i04-YBMf7c-_BiLG-yeXl6cJzpLNYzC7S1jYptso7PYTBKnp_
解决方案四:
楼上已给第二题答案,估计楼主已经在考试了,老衲就不出手了
解决方案五:
importjava.text.*;importjava.util.*;publicclassDiscountCalculator{publicstaticvoidmain(finalString[]args){do{try{StringinputString="";//商品总价输入用bufferSystem.out.print("请输入商品总价(直接回车则退出程序):");inputString=(newScanner(System.in)).nextLine();if(inputString==null||inputString.length()==0){break;//直接回车则退出程序}DoublefullPrice=0.0;//原价DoublediscountPrice=0.0;//折后价fullPrice=Double.valueOf(inputString);if(fullPrice<-Double.MAX_VALUE||Double.MAX_VALUE<fullPrice){thrownewNumberFormatException();}discountPrice=calculateDiscountPrice(fullPrice);printPrice(fullPrice,discountPrice);}catch(NumberFormatExceptione){System.out.println("您输入的商品总价的格式不正确,请重新输入!");}}while(true);System.out.println("程序结束,欢迎再次使用!");}/***根据商品总价计算出折后价**@paramfullPrice商品总价(原价)*@returndiscountPrice折后价*/privatestaticDoublecalculateDiscountPrice(DoublefullPrice){DoublediscountPrice=0.0;if(fullPrice>2000.0){//消费2000元以上的部分可以给予85折discountPrice=500.0+500.0*0.95+1000.0*0.90+(fullPrice-2000.0)*0.85;}elseif(fullPrice>1000.0){//消费1000元以上的部分可以给予9折discountPrice=500.0+500.0*0.95+(fullPrice-1000.0)*0.90;}elseif(fullPrice>500.0){//消费金额500元以上的部分可以给予95折discountPrice=500.0+(fullPrice-500.0)*0.95;}else{discountPrice=fullPrice;}returndiscountPrice;}/***@paramfullPrice商品总价(原价)*@paramdiscountPrice折后价*/privatestaticvoidprintPrice(DoublefullPrice,DoublediscountPrice){DecimalFormatdf=newDecimalFormat("#0.00");//输出格式System.out.println("=======================");System.out.println("原价:"+df.format(fullPrice)+"元");System.out.println("折后价:"+df.format(discountPrice)+"元");System.out.println("=======================");}}
请输入商品总价(直接回车则退出程序):a您输入的商品总价的格式不正确,请重新输入!请输入商品总价(直接回车则退出程序):-1=======================原价:-1.00元折后价:-1.00元=======================请输入商品总价(直接回车则退出程序):0=======================原价:0.00元折后价:0.00元=======================请输入商品总价(直接回车则退出程序):1=======================原价:1.00元折后价:1.00元=======================请输入商品总价(直接回车则退出程序):499=======================原价:499.00元折后价:499.00元=======================请输入商品总价(直接回车则退出程序):499.5=======================原价:499.50元折后价:499.50元=======================请输入商品总价(直接回车则退出程序):500=======================原价:500.00元折后价:500.00元=======================请输入商品总价(直接回车则退出程序):500.5=======================原价:500.50元折后价:500.48元=======================请输入商品总价(直接回车则退出程序):501=======================原价:501.00元折后价:500.95元=======================请输入商品总价(直接回车则退出程序):999=======================原价:999.00元折后价:974.05元=======================请输入商品总价(直接回车则退出程序):1000=======================原价:1000.00元折后价:975.00元=======================请输入商品总价(直接回车则退出程序):1001=======================原价:1001.00元折后价:975.90元=======================请输入商品总价(直接回车则退出程序):1999=======================原价:1999.00元折后价:1874.10元=======================请输入商品总价(直接回车则退出程序):2000=======================原价:2000.00元折后价:1875.00元=======================请输入商品总价(直接回车则退出程序):2001=======================原价:2001.00元折后价:1875.85元=======================请输入商品总价(直接回车则退出程序):1.7976931348623157E308=======================原价:179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元折后价:152803916463296830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元=======================请输入商品总价(直接回车则退出程序):1.7976931348623158E308=======================原价:179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元折后价:152803916463296830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元=======================请输入商品总价(直接回车则退出程序):1.7976931348623159E308您输入的商品总价的格式不正确,请重新输入!请输入商品总价(直接回车则退出程序):程序结束,欢迎再次使用!
解决方案六:
引用3楼u014496722的回复:
楼上已给第二题答案,估计楼主已经在考试了,老衲就不出手了
请帮忙检查一下#4楼的程序和测试用例吧给人家回答错了可不太好
解决方案七:
期末JAVA两题编程不会写,楼主只会C。学校没有开Java的课程吗?如果没有开,为什么要你们用Java些程序?如果开了,这么简单的都些不出来,对的起你父母吗?大家不能为了点分没底线,这个是期末作业。
解决方案八:
楼主推荐几本c书看看。
解决方案九:
我就奇怪楼上的这么热心干什么居然楼主自己选择要学习java的平时不好好学,这么简单的题目居然还要来请教说据不好听的简直就是一祸害
解决方案十:
说的对....感觉下次类似的写思路就好了
解决方案十一:
注册个账户得到答案也不结贴吗?
解决方案十二:
会c的人用java来做这个,只需要花一个小时学习java就足够了,因为while、if、for等基本的语法c和java都是一样的,唯一不同的是java面向对象,需要定义一个类,而c不用。就这点区别一个小时足够学习了。
解决方案十三:
引用11楼rumlee的回复:
会c的人用java来做这个,只需要花一个小时学习java就足够了,因为while、if、for等基本的语法c和java都是一样的,唯一不同的是java面向对象,需要定义一个类,而c不用。就这点区别一个小时足够学习了。
你只需要看一个java的helloworld程序,然后结合你学习的c知识就可以做了。
解决方案十四:
dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;引用2楼Android_iPhone的回复:
publicclassABCDtimes9equalsDCBA{publicstaticvoidmain(finalStringargv[]){intdcba=0;for(intabcd=1000;abcd<=9999;abcd++){dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;if(abcd*9==dcba){System.out.println(abcd+"*9="+dcba);}}}}
1089*9=9801
框架如上,最有用的那行代码按下Ctrl+A可以看到,最好自己考虑一下再看答案参考:http://zhidao.baidu.com/link?url=_ubJJ2RDt72JZqe5-hHKrsKcpbbNCvaphf4Z7i04-YBMf7c-_BiLG-yeXl6cJzpLNYzC7S1jYptso7PYTBKnp_
大神能不能说说为什么要写dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;这一行啊,为嘛我感觉很多余呢?
解决方案十五:
引用13楼u012875881的回复:
dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;Quote: 引用2楼Android_iPhone的回复:
publicclassABCDtimes9equalsDCBA{publicstaticvoidmain(finalStringargv[]){intdcba=0;for(intabcd=1000;abcd<=9999;abcd++){dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;if(abcd*9==dcba){System.out.println(abcd+"*9="+dcba);}}}}
1089*9=9801
框架如上,最有用的那行代码按下Ctrl+A可以看到,最好自己考虑一下再看答案参考:http://zhidao.baidu.com/link?url=_ubJJ2RDt72JZqe5-hHKrsKcpbbNCvaphf4Z7i04-YBMf7c-_BiLG-yeXl6cJzpLNYzC7S1jYptso7PYTBKnp_
大神能不能说说为什么要写dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;这一行啊,为嘛我感觉很多余呢?
分别取dcba的个十百千位数
解决方案:
引用13楼u012875881的回复:
dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;Quote: 引用2楼Android_iPhone的回复:
publicclassABCDtimes9equalsDCBA{publicstaticvoidmain(finalStringargv[]){intdcba=0;for(intabcd=1000;abcd<=9999;abcd++){dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;if(abcd*9==dcba){System.out.println(abcd+"*9="+dcba);}}}}
1089*9=9801
框架如上,最有用的那行代码按下Ctrl+A可以看到,最好自己考虑一下再看答案参考:http://zhidao.baidu.com/link?url=_ubJJ2RDt72JZqe5-hHKrsKcpbbNCvaphf4Z7i04-YBMf7c-_BiLG-yeXl6cJzpLNYzC7S1jYptso7PYTBKnp_
大神能不能说说为什么要写dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;这一行啊,为嘛我感觉很多余呢?
不然怎么知道dcba的值啊。其实也可以当作字符串处理,我是习惯字符串处理了。
解决方案:
引用6楼Inhibitory的回复:
期末JAVA两题编程不会写,楼主只会C。学校没有开Java的课程吗?如果没有开,为什么要你们用Java些程序?如果开了,这么简单的都些不出来,对的起你父母吗?大家不能为了点分没底线,这个是期末作业。
强烈顶,没开java怎么会有java期末考试,有开java了,会c不会java,这么简单的题目都做不出来,而且是函授了,还不好好学习。还好意思说只会c不会java,这两道java题语法上和c几乎是一样的,c的思路一样是可以用到java上的,只需要helloworld级的java水平。都读函授了,还不好好学,这种人真心不能帮
解决方案:
引用13楼u012875881的回复:
dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;Quote: 引用2楼Android_iPhone的回复:
publicclassABCDtimes9equalsDCBA{publicstaticvoidmain(finalStringargv[]){intdcba=0;for(intabcd=1000;abcd<=9999;abcd++){dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;if(abcd*9==dcba){System.out.println(abcd+"*9="+dcba);}}}}
1089*9=9801
框架如上,最有用的那行代码按下Ctrl+A可以看到,最好自己考虑一下再看答案参考:http://zhidao.baidu.com/link?url=_ubJJ2RDt72JZqe5-hHKrsKcpbbNCvaphf4Z7i04-YBMf7c-_BiLG-yeXl6cJzpLNYzC7S1jYptso7PYTBKnp_
大神能不能说说为什么要写dcba=(abcd%10*1000)+(abcd/10%10*100)+(abcd/100%10*10)+abcd/1000;这一行啊,为嘛我感觉很多余呢?
#14楼+1当时也考虑用字符串处理了,考虑到LZ对C比较熟悉,没用Java独有的功能……
解决方案:
daxia们都已实现了,接分,多谢.
解决方案:
大家都实现了,这很简单。很好,希望给分!!1
解决方案:
第一道很明显其实很简单多几个判断和异常处理就行了!但是应用上java的特性继承封装多态和设计模式这样的思路就更好了
解决方案:
使用ifelseif语句对输入的价格进行判断就是了
解决方案:
引用4楼Android_iPhone的回复:
importjava.text.*;importjava.util.*;publicclassDiscountCalculator{publicstaticvoidmain(finalString[]args){do{try{StringinputString="";//商品总价输入用bufferSystem.out.print("请输入商品总价(直接回车则退出程序):");inputString=(newScanner(System.in)).nextLine();if(inputString==null||inputString.length()==0){break;//直接回车则退出程序}DoublefullPrice=0.0;//原价DoublediscountPrice=0.0;//折后价fullPrice=Double.valueOf(inputString);if(fullPrice<-Double.MAX_VALUE||Double.MAX_VALUE<fullPrice){thrownewNumberFormatException();}discountPrice=calculateDiscountPrice(fullPrice);printPrice(fullPrice,discountPrice);}catch(NumberFormatExceptione){System.out.println("您输入的商品总价的格式不正确,请重新输入!");}}while(true);System.out.println("程序结束,欢迎再次使用!");}/***根据商品总价计算出折后价**@paramfullPrice商品总价(原价)*@returndiscountPrice折后价*/privatestaticDoublecalculateDiscountPrice(DoublefullPrice){DoublediscountPrice=0.0;if(fullPrice>2000.0){//消费2000元以上的部分可以给予85折discountPrice=500.0+500.0*0.95+1000.0*0.90+(fullPrice-2000.0)*0.85;}elseif(fullPrice>1000.0){//消费1000元以上的部分可以给予9折discountPrice=500.0+500.0*0.95+(fullPrice-1000.0)*0.90;}elseif(fullPrice>500.0){//消费金额500元以上的部分可以给予95折discountPrice=500.0+(fullPrice-500.0)*0.95;}else{discountPrice=fullPrice;}returndiscountPrice;}/***@paramfullPrice商品总价(原价)*@paramdiscountPrice折后价*/privatestaticvoidprintPrice(DoublefullPrice,DoublediscountPrice){DecimalFormatdf=newDecimalFormat("#0.00");//输出格式System.out.println("=======================");System.out.println("原价:"+df.format(fullPrice)+"元");System.out.println("折后价:"+df.format(discountPrice)+"元");System.out.println("=======================");}}请输入商品总价(直接回车则退出程序):a您输入的商品总价的格式不正确,请重新输入!请输入商品总价(直接回车则退出程序):-1=======================原价:-1.00元折后价:-1.00元=======================请输入商品总价(直接回车则退出程序):0=======================原价:0.00元折后价:0.00元=======================请输入商品总价(直接回车则退出程序):1=======================原价:1.00元折后价:1.00元=======================请输入商品总价(直接回车则退出程序):499=======================原价:499.00元折后价:499.00元=======================请输入商品总价(直接回车则退出程序):499.5=======================原价:499.50元折后价:499.50元=======================请输入商品总价(直接回车则退出程序):500=======================原价:500.00元折后价:500.00元=======================请输入商品总价(直接回车则退出程序):500.5=======================原价:500.50元折后价:500.48元=======================请输入商品总价(直接回车则退出程序):501=======================原价:501.00元折后价:500.95元=======================请输入商品总价(直接回车则退出程序):999=======================原价:999.00元折后价:974.05元=======================请输入商品总价(直接回车则退出程序):1000=======================原价:1000.00元折后价:975.00元=======================请输入商品总价(直接回车则退出程序):1001=======================原价:1001.00元折后价:975.90元=======================请输入商品总价(直接回车则退出程序):1999=======================原价:1999.00元折后价:1874.10元=======================请输入商品总价(直接回车则退出程序):2000=======================原价:2000.00元折后价:1875.00元=======================请输入商品总价(直接回车则退出程序):2001=======================原价:2001.00元折后价:1875.85元=======================请输入商品总价(直接回车则退出程序):1.7976931348623157E308=======================原价:179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元折后价:152803916463296830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元=======================请输入商品总价(直接回车则退出程序):1.7976931348623158E308=======================原价:179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元折后价:152803916463296830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00元=======================请输入商品总价(直接回车则退出程序):1.7976931348623159E308您输入的商品总价的格式不正确,请重新输入!请输入商品总价(直接回车则退出程序):程序结束,欢迎再次使用!
第一个从for(inti=9999;i>999;i-=9)个人觉得这样更好一些
解决方案:
答案已出来了,接分,
解决方案:
第二题的简单算法publicclassTest9{publicstaticvoidmain(String[]args){StringBuilderbuilder=newStringBuilder(4);for(inti=9000,j=i/9;i<10000;i+=9,j=i/9){if(j%10==9){builder.setLength(0);if(Integer.parseInt(builder.append(i).reverse().toString())==j){System.out.format("%d*9=%dn",j,i);}}}}}
解决方案:
现在张口就要代码的,JAVA版主都不管了?
解决方案:
估计楼主已经考试过了
解决方案:
intfun(intsum){if(sum>2000)return500+500*0.95+1000*0.9+0.85*(sum-2000);if(sum>1000)return500+500*0.95+0.9*(sum-1000);if(sum>500)return500+0.95*(sum-500)elsesum;}
解决方案:
publicvoidtestGame(){inta=0;intb=0;intc=0;intd=0;for(a=1;a<=9;a++){for(b=0;b<=9;b++){for(c=0;c<=9;c++){for(d=0;d<=9;d++){if((a*1000+b*100+c*10+d)*9==(d*1000+c*100+b*10+a)){System.out.println(a*1000+b*100+c*10+d);}}}}}}
解决方案:
楼主,以后这种问题就不要来了,用if,else或者case都可以解决的问题,你既然会C语言,那么你肯定会用C写,转换成JAVA不久Ok了