java小球落体问题_[Java 编程基本功] (五) 小球落体, 发奖金, 1,2,3,4 可以组成多少个数...

[Java 编程基本功] (五) 小球落体, 发奖金, 1,2,3,4 可以组成多少个数

第十三题

一球从 100 米高度自由落下, 每次落地后反跳回原高度的一半; 再落下, 求它在第 10 次落地时, 共经过多少米? 第 10 次反弹多高?

思路:

小球落到地上再反弹到原高度的一半视为一次下落的过程, 第十次落地时, 完成了 9 次落地再反弹的过程.

代码:publicclassBall{

publicstaticvoidmain(String[]args){

//h 记录球的初始高度

doubleh=100;

//up 记录小球反弹的距离

doubleup=0;

//down 记录小球下落的距离

doubledown=0;

for(inti=1;i<10;i++){

down=down+h;

up=up+h/2;

h=h/2;

}

System.out.println("10 次落地共经过多少米"+(down+up+h));

System.out.println("第 10 次反弹高度"+h/2);

}

}

这样子, 代码是不是就比较容易理解了呢?

咱们的 Java 毕竟是一门面相对象的语言, 所以咱们来玩点花样, 用面相对象的方式来解决这个问题, 嘿嘿我真是机智

面相对象的方式:

一球从 100 米高度自由落下, 每次落地后反跳回原高度的一半; 再落下, 求它在第 10 次落地时, 共经过多少米? 第 10 次反弹多高?

先来写一个小球的实体类:

代码:publicclassBall{

doubleheight;

doublesum;

publicBall(doubleheight){

this.height=height;

sum=0.0;

}

publicvoidfall(){

sum=sum+height;

}

publicvoidbound(){

height=height/2;

sum=sum+height;

}

@Override

publicStringtoString(){

return"Ball [高度"+height+", 经过的路程"+sum+"]";

}

}

现在我们另外在写一个代码来调用这个代码:publicclassBallTest{

publicstaticvoidmain(String[]args){

//new 一个 1 小球对象

Ballball=newBall(100);

// 小球完成 9 次落地反弹

for(inti=1;i<10;i++){

ball.fall();

ball.bound();

}

// 第十次落地时的距离

ball.fall();

System.out.println(ball);

// 反弹的高度

ball.bound();

System.out.println("小球的高度为:"+ball.height);

}

}

效果图:

ab7653affab982b574eb7acc55df2e04.gif

image

当然重点是第一种方式, 第二种面相对象的方式, 现在看不懂也没关系, 我们一点一点来. 自己可以去尝试一下, 但是千万不要知识中毒, 我们就是锻炼一下这种面相对象的思想而已~

第十四题

有 1,2,3,4 四个数字, 能组成多少个互不相同且无重复数字的三位数? 都是多少?

思路:

我是没有别的想法, 就用穷举法吧 (小伙伴们有好方法欢迎留言谈论哈)

代码:publicclassTest2{

publicstaticvoidmain(String[]args){

intcount=0;

for(intx=1;x<5;x++){

for(inty=1;y<5;y++){

for(intz=1;z<5;z++){

if(x!=y&&x!=z&&y!=z){

count++;

System.out.println(x*100+y*10+z);

}

}

}

}

System.out.println("共有"+count+"个三位数");

}

}

第十五题

企业发放的奖金根据利润提成. 利润低于或等于 10 万元时, 奖金可提 10%; 利润高于 10 万元, 低于 20 万元时, 低于 10 万元的部分按 10% 提成, 高于 10 万元的部分, 可提成 7.5%;20 万到 40 万之间时, 高于 20 万元的部分, 可提成 5%;40 万到 60 万之间时高于 40 万元的部分, 可提成 3%;60 万到 100 万之间时, 高于 60 万元的部分, 可提成 1.5%, 高于 100 万元时, 超过 100 万元的部分按 1% 提成, 从键盘输入当月利润, 求应发放奖金总数?

代码:importjava.util.Scanner;

publicclassBonus{

publicstaticvoidmain(String[]args){

doublex=0,y=0;

System.out.println("请输入当前利润 (单位: 万)");

Scannerin=newScanner(System.in);

while(in.hasNext()){

x=in.nextDouble();

if(x>=0&&x<=10){

y=x*0.1;

}elseif(x>10&&x<=20){

y=10*0.1+(x-10)*0.075;

}elseif(x>20&&x<=40){

y=10*0.1+10*0.075+(x-20)*0.05;

}elseif(x>40&&x<=60){

y=10*0.1+10*0.075+20*0.05+(x-40)*0.03;

}elseif(x>60&&x<=100){

y=10*0.1+10*0.075+20*0.05+20*0.03+(x-60)*0.015;

}elseif(x>100){

y=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(x-100)*0.01;

}

System.out.println("应发放的奖金数"+y+"万");

}

}

}

来源: http://www.jianshu.com/p/2e55851340dc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值