学习Java的第二周
感觉自己学习能力非常差,,,还是直接一点,上题目和代码吧,从实践中学技术才是王道。
Ch2Demo1
1.编写程序,随机产生1和12之间整数的程序,并且根据数字1,2,…,12显示相应的英文月份:January,February,…,December。
month = (int) (Math.random()*12+1);
month = new Random().nextInt(12)+1;
本题主要是涉及到了随机数的产生,我学到两种简单的方法,一个是数学公式包里调用,还有一个就是Java自带的随机数Radom类。
Ch2Demo2
2.编写可以玩流行的“剪刀-石头-布”游戏的程序,程序提示用户随机产生一个数,这个数为0,1,2,分别表示石头、剪刀和布。程序提示用户输入0、1、2,然后显示一条信息,表明用户和计算机谁赢了游戏,谁输了游戏,或是打了平手。
(如果考虑人或机器3盘两胜呢)
本题纯粹练手,没有啥新知识。
Ch2Demo3
3.编写程序,输入一个年份及月份,输出这个月有多少天。
毫无疑问这一题也是练手的。
Ch2Demo4
4.编写程序实现按国家最新发布的个人所得税来计算,输入一个人的工资,输出应该缴纳的税费是多少?
已经不想过多赘述了。
Ch2Demo5
5.编写程序,提示用户输入两个圆的中心坐标及各自的半径值,然后确定第二个袁与第一个圆的关系。
double distance;
distance = Math.pow((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2),0.5);//第一种方法
distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));//第二种方法
if (distance < Math.abs(r1 - r2)) {
System.out.println("One circle is in another!");
} else if (distance < (r1 + r2)) {
System.out.println("Two circles intersect!");
} else {
System.out.println("The two circles do not intersect!");
}
判断两圆关系,无非就是看圆心距离,两圆距离公式在代码里。然后还有一个比较实用方便的就是数学方法包里取绝对值的方法Math.abs() 了。
Ch2Demo6
6.编写程序,模拟抛硬币1000000次,统计出现正面和反面的次数。
int result;
int nums1 = 0, nums2 = 0;
for (int i = 1; i <= 1000000; i++) {
result = (int) (Math.random() * 2 + 1);
if (result == 1) {
nums1++;
} else {
nums2++;
}
}
简单,num1、num2为计数器分别计算正面和反面的次数,最后输出。
Ch2Demo7
7.编写程序,提示用户输入一个社保号码,它的格式是DDD-DD-DDDD,其中D是一个数字。你的程序应该判断输入是否合法。
String insurance;
Scanner input=new Scanner(System.in);
System.out.println("Enter a Insurance number:");
insurance =input.nextLine();
input.close();
boolean b=insurance.matches("\\d{3}-\\d{2}-\\d{4}"); //正则表达式
if(b) {
System.out.println("right");
}else {
System.out.println("wrong!");
}
本题主要学到了整行输入和正则表达式的使用。
Ch2Demo8
8.编写程序,假设一个车牌号码由三个大写字母和后面的四个数字组成,编程实现生成一个车牌号码并输出。
StringBuffer s=new StringBuffer();
for(int i=1;i<=3;i++) {
s.append((char)(65+(int) (Math.random() *26 )));
}
for(int i=1;i<=4;i++) {
s.append((int) (Math.random() *10 ));
}
System.out.println(s);
Java中字符串StringBuffer类及其内的append方法的使用。
Ch2Demo9
9.编写程序,读入未指定个数的整数,判断读入的正数有多少个,读入的负数有多少个,然后计算这些输入值的总和及其平均值,当输入0时结束,不对0计数。平均数以浮点数显示。
int num;//读入的数
int pnum = 0;//正数计数器
int nnum = 0;//负数计数器
int sum = 0;//总数
double average;//平均数
Scanner input = new Scanner(System.in);
while((num = input.nextInt()) != 0) {
sum += num;
if(num > 0) {
pnum += 1;
}
if(num < 0) {
nnum += 1;
}
}
input.close();
average = (double)sum / (pnum+nnum);
System.out.println("positive number:"+pnum+"\nnegetive number:"+nnum+"\naverage:"+average);
练手题,直接贴代码。
Ch2Demo10
10.假设今年一个大学的学费为10000元,学费的年增长率为5%。编写程序,计算4年后的学费,以及从今年开始4年内总学费是多少?
这种右手就能写出来的题目就不贴代码了。
总结
本周主要学习了Java里的数组,随机数,字符串,多少跟C/C++有些不同。