Java/java 程序设计 第二章课后习题详解;1.今天是星期二,100天后是星期几;2.编写一个能读取圆柱体的半径和长度并计算体积和表面积;3.输出数字直角三角形;4。输出直角杨辉三角形

本文详细解析了四个Java编程题目:1.从星期二开始推算100天后的星期;2.利用Java获取当前日期并计算100天后的日期;3.读取用户输入计算圆柱体的体积和表面积;4.输出数字直角三角形和杨辉三角形。通过实例代码展示了如何解决这些问题,并给出了运行结果。
摘要由CSDN通过智能技术生成

Java/java 程序设计 第二章课后习题详解;

  • 1.如果今天是星期二,编程实现100天后是星期几;
  • 2.难度加大,编程实现求现在计算机100天后是星期几?
  • 3.编写一个能从键盘读取圆柱体的半径和长度并计算体积和表面积;
  • 4.输出数字直角三角形
  • 5.指定输出层数直角三角形的杨辉三角;

1.如果今天是星期二,编程实现100天后是星期几;

分析问题,星期数是以 7 为周期,只要知道 N 除 7 余数为 多少 加上当前星期二即可;

			//核心代码片段:
			int nowday = 2;
			int day = 100 % 7;
	switch (day) {
	        case 0:
	            System.out.println("今天星期二");
	            break;
	        case 1:
	            System.out.println("今天星期三");
	            break;
	        case 2:
	            System.out.println("今天星期四");
	            break;
	        case 3:
	            System.out.println("今天星期五");
	            break;
	        case 4:
	            System.out.println("今天星期六");
	            break;
	        case 5:
	            System.out.println("今天星期日");
	            break;
	        case 6:
	            System.out.println("今天星期一");
	            break;
	        default:
	            break;
	        }

2.难度加大,编程实现求现在计算机100天后是星期几?

这里就需要引用到java自带的包
import java.util.Calendar;
import java.util.Date;

从而获取当前电脑的日期(当然时间也可以),下面上代码片段;

import java.util.Scanner;
import java.util.Calendar;
import java.util.Date;		//Java工具包的引用;

public class Day {
	public static void main(String[] args) {
	
String[] weekDays = { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };			//设置字符串数组存放星期;
		Calendar cal = Calendar.getInstance();
		int nowday = cal.get(Calendar.DAY_OF_WEEK) - 1;		//获取当前日期;
		if (nowday < 0)
			nowday = 0;

		int afterday;
		Scanner sc = new Scanner(System.in);
		System.out.println("enter N day:");		//实现由键盘输入变化天数;
		int n = sc.nextInt();
		afterday = nowday + n % 7;
		System.out.println(n + " days after is " + weekDays[afterday]);
	}
}

运行结果如图:
运行结果如图
由于小编是星期天码字,七天之后还是星期天,哈哈哈哈。

3.编写一个能从键盘读取圆柱体的半径和长度并计算体积和表面积;

分析需求:
1.需要键盘输入,所以要引用import.java.util.Scanner;
2.圆柱体的计算公式用java语言表达:
double area = Math.PI * 2 * radius * h + 2 * Math.PI * radius * radius;
double volume = Math.PI * radius * radius * h;

注意变量的类型要使用double型哦`

import java.util.Scanner;

public class Cylander {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("enter Cylander's r:");
		double r = sc.nextDouble();		//输入圆柱体的半径r;
		System.out.println("enter Cylander's h:");
		double h = sc.nextDouble();		//输入圆柱体的高h;
		Cyland c = new Cyland(r,h);
		System.out.println("Cylander's area = " + c.area() + " volume's = " + c.volume());
	}									//输出面积以及体积;
}
class Cyland {
	double radius;
	double h;
	public Cyland(double r, double h) {
		this.radius = r;			//构造体
		this.h = h;
	}
	double area() {			//求面积
			double area = Math.PI * 2 * radius * h + 2 * Math.PI * radius * radius;
		return area;
	}
	double volume() {		//求体积
			double volume = Math.PI * radius * radius * h;
		return volume;
	}
}

运行结果如图:
运行结果如图

4.输出数字直角三角形

1
1 2
1 2 3
1 2 3 4
先观察规律:
不难看出利用两个for循环即可

import java.util.Scanner;

public class numberTriangle {
	public static void main(String[] args) {
		Scanner myScanner = new Scanner(System.in);
		int n = 1;
		System.out.println("please input Triangle's layers:");
		int layer = myScanner.nextInt();			//获取三角形的层数;
		System.out.println("===============");		//分隔符;
		for(int i = 1;i <= layer; i++){				//外循环层数
			for(int j = 1;j <= i; j++,n++){			//内循环 输出 1 至 每一层对应层数;
				System.out.print(j);
			}
			System.out.println(" ");				//每一次外循环结束换行;
		}
	}
}

运行结果:
运行结果

5.指定输出层数直角三角形的杨辉三角;

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
不难看出其三角形蕴含规律为:
1.第一列均为 1 ;
2.每一行的最后均为 1 ;
3.第三行开始中间的数字等于肩上两数字之和;

具体代码实现请看代码区。

import java.util.Scanner;
public class yhtriangle {
	public static void main(String[] args) {
	Scanner myScanner = new Scanner(System.in);
	System.out.println("please input yang hui triangle's rows:");
	int rows = myScanner.nextInt();
	int[][]	yh =new int [rows][];				//定义一个二维数组 列单位可先不输入 
	for(int i = 0;i < yh.length;i++) {
		yh[i] = new int[i + 1];					//输出规律 列时  利用 此语句 => 数组名[j] = new 数据类型[与外层循环的规律];
		for(int j = 0;j < yh[i].length;j++) {
			if(j == 0 || j == yh[i].length - 1) {	//第一列 和 每一行最后一个 都为 1
				yh[i][j] = 1;
			}
			else {		
				yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j];		
			}									//等于肩上两数之和
		}
	}	
		System.out.println("============");
	for(int i = 0;i < yh.length;i++) {			//注意 数组名.length = 行 ; 数组名[i].length = 列 ;
		for(int j =0;j < yh[i].length;j++) {
			System.out.print(yh[i][j] + " ");
			}
	System.out.println();
		}
	}
}

运行结果如图:
运行结果如图

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值