A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 电玩   /  2013-4-19 22:32  /  8217 人查看  /  112 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 电玩 于 2013-4-23 21:38 编辑

2.14(医疗应用程序:计算BMI)身体质量指数(BMI)是对体重的健康测量。它的值可以通过将体重(以公斤为单位)除以身高(以米为单位)的平方值得到。
编写程序,提示用户输入体重(以磅为单位)以及身高(以英寸为单位),然后显示BMI。
注意:一磅是0.45359237公斤而一英寸是0.0254米。

import java.util.Scanner;
public class Compute_BMI14  //计算BMI
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入您的磅体重:");
  double pounds=input.nextDouble();//接收磅体重
        double  kilogram=pounds*0.45359237;                  //磅转换为公斤
        System.out.print("请输入您的身高英寸:");
  double inches=input.nextDouble();//接收身高英寸
        double meter=inches*0.0254;    //英寸转换为米
       double bmi=kilogram/(meter*meter);//计算BMI
  
  System.out.println("您的BMI是"+bmi);
}
}
/*
请输入您的磅体重:95.5
请输入您的身高英寸:50
您的BMI是26.857257942215885
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-23 21:59 编辑

2.15(财务应用程序:复利值)假设你每月向银行账户存100美元,年利率为5%,那么每月利率是0.05/12=0.00417.
第一个月之后,账户上的值就变成: 100*(1+0.00417)=100.417
第二个月之后,账户上的值就变成:(100+100.417)*(1+0.00417)=201.252
第三个月之后,账户上的值就变成:(100+201.252)*(1+0.00417)=302.507
以此类推。
编写程序显示六个月后账户上的钱数。(在练习4.30中,你将使用循环来简化这里的代码,并能显示任何一个月之后的账户值)


public class Compounding15  //计算复利
{
public static void main(String[] args)
{   
  double money=0;
  for (int x=0;x<6 ;x++ )
  {
    money=(100+money)*(1+0.00417);//直接for循环
  }
  System.out.println("您的六个月之后的账户金额是"+(int)(money*100)/100.0+"元。");
}
}
/*
您的六个月之后的账户金额是608.81元。
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-23 22:13 编辑

其实,《java语言程序设计》(美 Y.Danilei Liang)这本书的编程题难是不难,但题量多,怪不得哈佛的学生要在图书馆通宵读书。而且与实践紧密相关。
2.16(科学方面:计算能量)编写程序,计算将水从初始温度加热到最终温度所需的能量。
程序应该提示用户输入水的重量(以千克为单位),以及水的初始温度和最终温度。
计算能量的公式是:Q=M*(最终温度-初始温度)*4184;
这里的M是以千克为单位的重量,温度以摄氏度为单位,而能量Q以焦耳为单位。

import java.util.Scanner;
public class ComputeEnergy16  //计算能量
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入水的重量(以千克为单位):");
  double kilogram=input.nextDouble();//接收水的重量
        System.out.print("请输入水的初始温度(以摄氏度为单位):");
  double initialTemperature=input.nextDouble();//接收初始温度
        System.out.print("请输入水的最终温度(以摄氏度为单位):");
  double finalTemperature=input.nextDouble();//接收最终温度
double energy=kilogram*(finalTemperature-initialTemperature)*4184;//计算能量
  
  System.out.println("能量需要"+energy+"焦耳。");
}
}
/*
请输入水的重量(以千克为单位):55.5
请输入水的初始温度(以摄氏度为单位):3.5
请输入水的最终温度(以摄氏度为单位):10.5
能量需要1625484.0焦耳。
*/

评分

参与人数 1黑马币 +12 收起 理由
曹睿翔 + 12 有自己的观点很重要,能分享更不错了!.

查看全部评分

回复 使用道具 举报
本帖最后由 电玩 于 2013-4-23 22:58 编辑

2.17(科学方面:风寒温度)外面到底有多冷?只有温度是不足以提供答案的,包括风速、相对湿度以及阳光等其他的因素在确定室外是否寒冷方面都起了很重要的作用。2001年,国家气象服务(NWS)利用温度和风速,使用新的风寒温度来测量寒冷程度。计算公式如下所示:
t[sub]wc[/sub]=35.74+0.6215t[sub]0[/sub]-35.75V[sub]0.16[/sub]+0.4275t[sub]0[/sub] V[sup]0.16[/sup];


这里的的t[sub]0[/sub]是室外温度,以华氏摄氏度为单位,而V是速度,以每小时英里数为单位。t[sub]wc[/sub]是风寒温度。该公式不适用于风速低于2mph或温度在-58[sup]o[/sup]F以下和41[sup]o[/sup]F以上的情况。
编写程序,提示用户输入在-58oF和41oF之间的整数,同时大于或等于2的风速,然后显示风寒温度。使用Math.pow(a,b)来计算V[sup]0.16[/sup]

import java.util.Scanner;
public class ColdTemperature17  //计算风寒温度
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入室外温度(以华氏摄氏度为单位:-58度到41度之间的数字):");
  double temperature=input.nextDouble();//接收室外温度

        System.out.print("请输入风速(以每小时英里数为单位,输入大于等于2的数字):");
  double speed=input.nextDouble();//接收风速

        double coldTemperature=35.74+0.6215*temperature-35.75*Math.pow(speed,0.16)+0.4275*temperature*Math.pow(speed,0.16);//计算风寒温度
  
  System.out.println("风寒温度是"+coldTemperature+"华氏度。");
}
}
/*
请输入室外温度(以华氏摄氏度为单位:-58度到41度之间的数字):5.3
请输入风速(以每小时英里数为单位,输入大于等于2的数字):6
风寒温度是-5.567068455881625华氏度。
*/

回复 使用道具 举报
本帖最后由 电玩 于 2013-4-23 23:06 编辑

2.18(打印表格)编写程序,显示下面的表格:
a            b             pow(a,b)
1            2             1
2            3             8
3            4             81
4            4             1024
5            6             15625


class PrintForm18 //打印表格,这题太简单了。难道是复习第一单元的打印吗?
{
public static void main(String[] args)
{
  System.out.println("a            b             pow(a,b)");
  System.out.println("1            2             1");
  System.out.println("2            3             8");
  System.out.println("3            4             81");
  System.out.println("4            4             1024");
  System.out.println("5            6             15625");
}
}
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-23 23:30 编辑

2.19(随机字符)编写程序,使用System.CurrentTimeMillis()显示任意一个大写字母。

class ShowCurrentTime 19
{
public static void main(String[] args)
{
  long totalMilliseconds=System.currentTimeMillis();//显示当前时间。从1970年1月1日午夜到现在的毫秒数
  char ch=(char)totalMilliseconds;
  System.out.println(ch);
}
}
/*好像不一定显示大写字母的,只能显示ASCII码,而且会随时间而变化

*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-23 23:36 编辑

2.20(几何方面:两点间的距离)编写程序,提示用户输入两个点(x1,x2)和(y1,y2),然后显示两点间的距离。计算两点间距离的公式是
注意:可以使用Math.pow(a,0.5)来计算。

截图14.png (4.87 KB, 下载次数: 46)

截图14.png
回复 使用道具 举报
import java.util.Scanner;
public class DistanceTwoPoints20 //计算两点间距离
{
        public static void main(String[] args)
        {
                Scanner input=new Scanner(System.in);
                System.out.print("请输入第一个点的坐标 x1 y1:");
                double firstPointx1=input.nextDouble();//接收x1
        double firstPointy1=input.nextDouble();  //接收y1              
        

        System.out.print("请输入第二个点的坐标 x2 y2:");
                double secondPointx2=input.nextDouble();//接收x2
        double secondPointy2=input.nextDouble();   //接收y2

                double firstPoint=Math.pow(secondPointx2-firstPointx1,2);
        double secondPoint=Math.pow(secondPointy2-firstPointy1,2);
        double distanceTwoPoints=Math.pow(firstPoint+secondPoint,0.5);//计算两点间距离
               
                System.out.println("两点间距离是"+distanceTwoPoints);
        }
}
/*
请输入第一个点的坐标 x1 y1:1.5 -3.4
请输入第二个点的坐标 x2 y2:4 5
两点间距离是8.764131445842194
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-24 00:03 编辑

2.21(几何方面:三角形的面积)编写程序,提示用户输入三角形的三个点(x1,y1),(x2,y2),(x3,y3),然后显示它的买面积。计算三角形的公式是:
s=(side1+side2+side3)/2;

截图16.png (6.96 KB, 下载次数: 49)

截图16.png
回复 使用道具 举报
import java.util.Scanner;//此题是建立在第21题的基础上的 循序渐进  
虽然我已经快学完集合类了。这些题目看上去我都会做。但看的懂与实际上敲出来是有差距的。尤其当你还是一个新手,敲代码没有达到十万行时,多敲敲代码是很有好处的。
public class AreaOfTriangle21  //计算三角形面积
{
        public static void main(String[] args)
        {
                Scanner input=new Scanner(System.in);
                System.out.print("请输入坐标 x1 y1 x2 y2 x3 y3:");
                double firstPointx1=input.nextDouble();//接收x1
        double firstPointy1=input.nextDouble();  //接收y1              
        
        double secondPointx2=input.nextDouble();//接收x2
        double secondPointy2=input.nextDouble();   //接收y2

                double thirdPointx3=input.nextDouble();//接收x3
        double thirdPointy3=input.nextDouble();   //接收y3

                double firstPoint=Math.pow(secondPointx2-firstPointx1,2);
        double secondPoint=Math.pow(secondPointy2-firstPointy1,2);
        double side1=Math.pow(firstPoint+secondPoint,0.5);//计算(x1,y1)到(x2,y2)的两点间距离
               
                   firstPoint=Math.pow(thirdPointx3-firstPointx1,2);
        double thirdPoint=Math.pow(thirdPointy3-firstPointy1,2);
        double side2=Math.pow(firstPoint+thirdPoint,0.5);//计算(x1,y1)到(x3,y3)的两点间距离
               
                  secondPoint=Math.pow(thirdPointx3-secondPointx2,2);
          thirdPoint=Math.pow(thirdPointy3-secondPointy2,2);
        double side3=Math.pow(thirdPoint+secondPoint,0.5);//计算(x3,y3)到(x2,y2)的两点间距离
               
                double s=(side1+side2+side3)/2;
                double area=Math.pow(s*(s-side1)*(s-side2)*(s-side3),0.5);//计算三角形面积
               
                System.out.println("三角形的面积是"+(int)(area*100)/100.0);
        }
}
/*
请输入坐标 x1 y1 x2 y2 x3 y3:1.5 -3.4 4.6 5 9.5 -3.4
三角形的面积是33.6
*/

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1 加油,希望你也回答别人的提问,那样也会有.

查看全部评分

回复 使用道具 举报
2.22(几何方面:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。计算六边形面积的公式是:
这里的s就是边长。

截图18.png (3.8 KB, 下载次数: 43)

截图18.png
回复 使用道具 举报
import java.util.Scanner;
class  HexagonalArea22  //计算六边形的面积
{
        public static void main(String[] args)
        {
                Scanner input=new Scanner(System.in);
                System.out.print("请输入六边形的边长 :");
                double side=input.nextDouble();//接收边长

                double area=(3*Math.pow(3,0.5))/2*side*side;//计算六边形的面积
                System.out.print("六边形的面积是"+area);
        }
}
/*
请输入六边形的边长 :5.5
六边形的面积是78.59180539343781
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-24 10:52 编辑

2.23(物理方面:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,如下式所示:
a=(V[sub]1[/sub]-V[sub]0[/sub])/t
编写程序。
提示用户输入以米/秒为单位的起始速度V[sub]0[/sub],以米/秒为单位的终止速度V[sub]1[/sub],以及以秒为单位的时间段,最后显示平均加速度。

import java.util.Scanner;
class  Acceleration23 //计算平均加速度
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入起始速度和终止速度(以米/秒为单位)和时间段(以秒为单位) :");
  double v0=input.nextDouble();//接收起始速度
  double v1=input.nextDouble();//接收终止速度
  double t=input.nextDouble();//接收时间段

  double a=(v1-v0)/t;//计算平均加速度
  System.out.println("平均加速度是"+a);
}
}
/*
请输入起始速度和终止速度(以米/秒为单位)和时间段(以秒为单位) :5.5 50.9 4.5
平均加速度是10.088888888888889
*/

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 相信一个技术大牛会横空出世

查看全部评分

回复 使用道具 举报
本帖最后由 电玩 于 2013-4-24 11:32 编辑

2.24(物理方面:求出跑道长度)假设一个飞机的加速度是a而起飞速度是v,那么可以使用下面的公式计算出飞机起飞所需的最短的跑道长度:
length=V[sup]2[/sup]/2a
编写程序,提示用户输入以米/秒为单位的速度v和以米/秒的平方(m/s[sup]2[/sup])为单位的加速度a,然后显示最短跑道长度。

import java.util.Scanner;
class  LengthOfRunway24 //计算跑道长度
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入速度(以米/秒为单位)和加速度(以米/秒的平方为单位) :");
  double v=input.nextDouble();//接收速度
  double a=input.nextDouble();//接收加速度
  

  double length=v*v/(2*a);//计算跑道长度
  System.out.println("最短的跑道长度是"+length);
}
}
/*
请输入速度(以米/秒为单位)和加速度(以米/秒的平方为单位) :60 3.5
最短的跑道长度是514.2857142857143
*/

回复 使用道具 举报
本帖最后由 电玩 于 2013-4-24 12:06 编辑

2.25(当前时间)程序清单2-6给出了显示当前格林威治时间的程序。修改这个程序,使之能够做到程序提示用户输入相对于GMT的时区偏移量,然后显示在这个特定时区的时间。

//程序清单2-6 显示当前时间
class ShowCurrentTime
{
public static void main(String[] args)
{
  long totalMilliseconds=System.currentTimeMillis();//当前时间与1970年1月1日0点之间单位为毫秒的差值
long totalSeconds=totalMilliseconds/1000;//总秒数
long currentSecond=totalSeconds%60;//当前秒数
long totalMinutes=totalSeconds/60;//总分钟数
long currentMinutes=totalMinutes%60;//当前分钟数
long totalHours=totalMinutes/60;//总小时数
long currentHours=totalHours%60;//当前小时数
System.out.println("当前格林威治时间是:  "+currentHours+":"+currentMinutes+":"+currentSecond);
}
}
/*
当前时间是:  15:51:2


import java.util.Scanner;
class ShowCurrentTime25
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.print("请输入您所在的时区与格林威治时间的偏移量:");
int time=input.nextInt();//接收偏移量
  long totalMilliseconds=System.currentTimeMillis();//当前时间与1970年1月1日0点之间单位为毫秒的差值
long totalSeconds=totalMilliseconds/1000;//总秒数
long currentSecond=totalSeconds%60;//当前秒数
long totalMinutes=totalSeconds/60;//总分钟数
long currentMinutes=totalMinutes%60;//当前分钟数
long totalHours=totalMinutes/60;//总小时数
long currentHours=totalHours%60;//当前小时数
System.out.println("当前您的时间是:  "+(currentHours+time)+":"+currentMinutes+":"+currentSecond);
}
}
/*可是我现在的时间是12点,为什么会相差12个小时呢??格林威治时间比北京时间慢8小时 格林威治时间+8小时=北京时间
请输入您所在的时区与格林威治时间的偏移量:8
当前您的时间是:  24:3:30
*/
回复 使用道具 举报
总算做完第二章的题目了,可以开始第三章的题目了。但可能要过一两天才能开始,因为要先将第三章的内容中的代码先敲一遍。虽然与我们毕向东老师讲的知识点一样,但这本书拓展的更广、更深。通过做第二章的题目,我将第二章的几页纸都翻旧了。
回复 使用道具 举报
//程序清单 3-1 一个简单的数学学习工具
import java.util.Scanner;
class AdditionQuiz
{
        public static void main(String[] args)
        {
        int number1=(int)(System.currentTimeMillis()%10);//取随机数
                int number2=(int)(System.currentTimeMillis()*7%10);

        Scanner input=new Scanner(System.in);
        System.out.print("What is "+number1+" + "+number2+" ? ");//请用户输入答案

                int answer=input.nextInt();
        System.out.println(number1+" + "+number2+" = "+answer+" is "+(number1+number2==answer) );//给答案判断
        }
}
/* 可以给小学生算0-10以内的加减乘除
What is 0 + 0 ? 1
0 + 0 = 1 is false

What is 5 + 5 ? 10
5 + 5 = 10 is true
*/
回复 使用道具 举报
//程序清单3-2 给出一个程序,提示用户输入一个整数。如果该数字是5的倍数,打印HiFive。如果该数字能被2整除,打印HiEven。
import java.util.Scanner;
class  SimpleIfDemo
{
        public static void main(String[] args)
        {
                Scanner input=new Scanner(System.in);
               
                System.out.print("请输入一个整数: ");
                int number=input.nextInt();

                if(number%5==0)
                        System.out.println("HiFive");//5的倍数

                if(number%2==0)
                        System.out.println("HiEven");//被2整除
        }
}
/*
请输入一个整数: 10
HiFive
HiEven
*/
回复 使用道具 举报
//程序清单3-3 猜生日(其实猜出生月份中的日期(0--31))
import java.util.Scanner;
class  GuessBirthday
{
        public static void main(String[] args)
        {
                String set1=
                        "1  3  5  7\n"+
                        "9 11 13 15\n"+
                        "17 19 21 23\n"+
                        "25 27 29 31";
                String set2=
                        "2  3  6  7\n"+
                        "10  11 14 15\n"+
                        "18 19 22 23\n"+
                        "26 27 30 31";
                String set3=
                        "4  5  6  7\n"+
                        "12 13  14 15\n"+
                        "20 21  22 23\n"+
                        "28  29  30  31";
                String set4=
                        "8  9 10  11\n"+
                        "12  13 14 15\n"+
                        "24  25 26 27\n"+
                        "28   29 30  31\n";
                String set5=
                        "16 17 18 19\n"+
                        "20 21 22 23\n"+
                        "24 25 26 27\n"+
                        "28 29 30 31";

                int day=0;

                Scanner input=new Scanner(System.in);
                System.out.println("您的出生日期在set1 中吗?");
                System.out.println(set1);
                System.out.print("请输入0表示不是,输入1表示是:");
                int answer=input.nextInt();

                if(answer==1)
                        day +=1;

        System.out.println("您的出生日期在set2 中吗?");
                System.out.println(set2);
                System.out.print("请输入0表示不是,输入1表示是:");
                 answer=input.nextInt();

                if(answer==1)
                        day +=2;

                System.out.println("您的出生日期在set3 中吗?");
                System.out.println(set3);
                System.out.print("请输入0表示不是,输入1表示是:");
                 answer=input.nextInt();

                if(answer==1)
                        day +=4;

                System.out.println("您的出生日期在set4 中吗?");
                System.out.println(set4);
                System.out.print("请输入0表示不是,输入1表示是:");
                 answer=input.nextInt();

                if(answer==1)
                        day +=8;

                System.out.println("您的出生日期在set5 中吗?");
                System.out.println(set5);
                System.out.print("请输入0表示不是,输入1表示是:");
                 answer=input.nextInt();

                if(answer==1)
                        day +=16;

        System.out.println("\n您的出生日期是"+day+"!");

        }
}
/*五个集合中的数字是有规律的。1、2、4、8、16分别对应二进制1、10、100、1000、10000.
您的出生日期在set1 中吗?
1  3  5  7
9 11 13 15
17 19 21 23
25 27 29 31
请输入0表示不是,输入1表示是:1
您的出生日期在set2 中吗?
2  3  6  7
10  11 14 15
18 19 22 23
26 27 30 31
请输入0表示不是,输入1表示是:0
您的出生日期在set3 中吗?
4  5  6  7
12 13  14 15
20 21  22 23
28  29  30  31
请输入0表示不是,输入1表示是:1
您的出生日期在set4 中吗?
8  9 10  11
12  13 14 15
24  25 26 27
28   29 30  31

请输入0表示不是,输入1表示是:0
您的出生日期在set5 中吗?
16 17 18 19
20 21 22 23
24 25 26 27
28 29 30 31
请输入0表示不是,输入1表示是:1

您的出生日期是21!
*/
回复 使用道具 举报
//程序清单 3-4 一个改进的数学学习工具
import java.util.Scanner;
class SubtractionQuiz
{
        public static void main(String[] args)
        {
        int number1=(int)(Math.random()*10);//取随机数(0到9之间的整数)
                int number2=(int)(Math.random()*10);

                if (number1<number2) //比较两者大小,如果number1<number2,则互换数值
                {
                        int temp=number1;
                        number1=number2;
                        number2=temp;
                }

        System.out.print("What is "+number1+" - "+number2+" ? ");//请用户输入答案

        Scanner input=new Scanner(System.in);
        int answer=input.nextInt();

          
          if (number1-number2==answer)   //给答案判断       
                {
           System.out.println("你答对了!");
                }else {
                System.out.println("你答错了!\n"+number1+" - "+number2+" = "+(number1-number2) );
                }
        }
}
/*
What is 9 - 9 ? 0
你答对了!

What is 9 - 6 ? 1
你答错了!
9 - 6 = 3
*/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马