Java语言程序设计(第十版)(基础篇)
目录:
第一章
1.1显示三条信息
显示Welcome to Java,welcome to Computer Science,Programming is fun三条信息。
tips:字符串用双引号
public class Exercise01_01{
public static void main(String[] args){
System.out.println("Welcome to Java");
System.out.println("welcome to Computer Science");
System.out.println("Programming is fun");
}
}
1.3显示图案
public class Exercise01_03{
public static void main(String[] args){
System.out.println(" J A V V A ");
System.out.println(" J A A V V A A");
System.out.println("J J AAAAA V V AAAAA");
System.out.println(" JJ A A V A A");
}
}
1.5 计算表达式
计算(9.5×4.5-2.5×3)/(45.5-3.5)表达式
public class Exercise01_05{
public static void main(String[] args){
System.out.println((9.5*4.5-2.5*3)/(45.5-3.5));
}
}
1.7近似求p
在程序中用1.0代替1
public class Exercise01_07{
public static void main(String[] args){
System.out.println(4*(1-1.0/3+1.0/5-1.0/7+1.0/9-1.0/11));
}
}
1.8圆的周长和面积
计算半径是5.5的圆的周长和面积。
public class Exercise01_08{
public static void main(String[] args){
System.out.println(2*5.5*3.14159);//周长
System.out.println(5.5*5.5*3.14159);//面积
}
}
1.10以英里计的平均速度
一个人跑步45分钟30秒内跑了14公里。编写一个程序显示以每小时多少英里为单位的平均速度值。(注意,一英里等于1.6公里。)
tips:注意时间和距离的单位转化
> public class Exercise01_10{ public static void main(String[] args){
> System.out.println((14/45.5)*60/1.6); } }
1.11人口估算
- 每7秒有一个诞生
- 每13秒有一个人死亡
- 每45秒有一个移民迁入
- 编写程序,显示未来5年的每年的人口数。假设当前的人口是312 032 486,每年有365天。提示:Java中,两个整数相除,结果还是整数,小数部分被去掉。例如:5/4等于1(而不是1.25),10/4等于2(而不是2.5).如果想得有小数部分的精确结果,进行除法运算的两个值之一必须是一个具有小数点的数值。例如:5.0/4等于1.25,10/4.0等于2.5。
tips:
人口基数+出生的-死亡的+迁入的
审题,显示每年的!
public class Exercise01_11{
public static void main(String[] args){
System.out.println(312032486+1*(365*24*60*60/7.0-365*24*60*60/13.0+365*24*60*60/45.0));
System.out.println(312032486+2*(365*24*60*60/7.0-365*24*60*60/13.0+365*24*60*60/45.0));
System.out.println(312032486+3*(365*24*60*60/7.0-365*24*60*60/13.0+365*24*60*60/45.0));
System.out.println(312032486+4*(365*24*60*60/7.0-365*24*60*60/13.0+365*24*60*60/45.0));
System.out.println(312032486+5*(365*24*60*60/7.0-365*24*60*60/13.0+365*24*60*60/45.0));
}
}
1.12以公里计的平均速度
一个人1小时40分钟35秒内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值。(1英里等于1.6公里。)
tips:注意写分数的时候要写小数。
public class Exercise01_12{
public static void main(String[] args){
System.out.println(24/(1+(40+35.0/60)/60)*1.6);
}
}
1.13代数:求解2×2线性方程
可以使用Cramer规则:
ax+by=e
cx+dy=f
x=(ed-bf)/(ad-bc) ; y=(af-ec)/(ad-bc)
求解下面的2×2线性方程组:
3.4x+50.2y=44.5
2.1x+0.55y=5.9。
public class Exercise01_13{
public static void main(String[] args){
System.out.println("x is ");
System.out.println((44.5*0.55-50.2*5.9)/(3.4*0.55-2.1*50.2));
System.out.println("y is ");
System.out.println((3.4*5.9-2.1*44.5)/(3.4*0.55-2.1*50.2));
}
}
第二章
2.1将摄氏温度转化为华氏温度
编写程序,从控制台读入double型的摄氏温度,然后将其转换为华氏温度,并且显示结果。转换公式如下所示:
华氏温度=(9/5)*摄氏温度+32
提示:在java中,9/5的结果是1,但是9.0/5的结果是1.8。
下面是一个运行示例:
Enter a degree in Celsius: 43
43 Celsius is 109.4 Fahrenheit
public class Exercise02_01{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("Enter a temperature in Celsius: ");
double cel = input.nextDouble();
double fra = cel*(9/5.0)+32;
System.out.println((int)cel+" Celsius is "+fra+"Fahrenheit");
}
}
2.2计算圆柱体的体积
读入圆柱体的半径和高,计算体积。
下面是运行示例:
Enter the radius and length of a cylinder: 5.5 12
The are is 95.0331
The volume is 1140.4
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Exercise02_02{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("Enter the radius and length of a cylinder: ");
double radius = input.nextDouble();
double length = input.nextDouble();
double area = radius * radius * 3.14159;
double volume = area * length;
BigDecimal bd = new BigDecimal(area);
BigDecimal bd2 = bd.setScale(4, BigDecimal.ROUND_HALF_UP);
System.out.print("The area is ");
System.out.println(bd2);
BigDecimal bd3 = new BigDecimal(volume);
BigDecimal bd4 = bd3.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.print("The volume is ");
System.out.println(bd4);
}
}
2.3将英尺转化为米
注意,一英尺等于0.305米。
tips:注意保留小数点后两位。
运行示例:16.5
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Exercise02_02{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("Enter the radius and length of a cylinder: ");
double radius = input.nextDouble();
double length = input.nextDouble();
double area = radius * radius * 3.14159;
double volume = area * length;
BigDecimal bd = new BigDecimal(area);
BigDecimal bd2 = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.print("The area is ");
System.out.println(bd2);
BigDecimal bd3 = new BigDecimal(volume);
BigDecimal bd4 = bd3.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.print("The volume is ");
System.out.println(bd4);
}
}
2.4将磅转换为千克
运行示例:55.5
public class Exercise02_04{
public static void main(String[] args){
System.out.print("Enter a number in pounds: ");
java.util.Scanner input = new java.util.Scanner(System.in);
Float pounds = input.nextFloat();
double kg = pounds*0.454;
System.out.println(pounds+" pounds is "+kg+" kilograms");
}
}
2.5计算小费
读入一笔费用和酬金率,计算酬金和总钱数。
运行示例:费用10美元,酬金率15%
public class Exercise02_05{
public static void main(String[] args){
System.out.print("Enter a number in pounds: ");
java.util.Scanner input = new java.util.Scanner(System.in);
double subtotal = input.nextDouble();
double gratuityrate = input.nextDouble();
double gratuity = (gratuityrate*subtotal)/100;
double total = gratuity+subtotal;
System.out.print("The gratuity is $"+gratuity+" and total is $"+total);
}
}
2.6求一个整数各位数的和
public class Exercise02_06{
public static void main(String[] args){
System.out.print("Enter a number between 0 and 1000: ");
java.util.Scanner input = new java.util.Scanner(System.in);
int Number = input.nextInt();
int num1 = Number;
int num2 = Number;
int sum = 0;
for(int i=1;i<=4;i++){
num1 = num2%10;
num2 = num2/10;
sum = sum+num1;
}
System.out.print("The sum of the digits is "+sum);
}
}
2.13财务应用程序:复利值
假设你每月向银行账户存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
以此类推。
编写代码显示六个月后账户上的钱数。
public class Exercise02_13{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("Enter the monthly saving ampunt: ");
double amount = input.nextDouble();
double value = 0;
double rate=0.00417;
for(int i=1;i<=6;i++){
value=(amount+value)*(1+rate);
}
System.out.print("After the sixth month, the account value is $"+value);
}
}
补充1:Notepad++如何快速注释
补充2:print和println的区别
补充3:保留小数位
资料:
https://www.jianshu.com/p/fa31f7ae8664
https://www.iteye.com/blog/mouselearnjava-1961008
补充4:计算带根号的数
使用Math.pow(a,b)计算a的开b次方