Java实验1:基本的Java语法和面向对象入门:一道实现简单类,一道线性筛法,一道实现万年历的查日历和查星期几(西电实验)
2021/6/8 20:26:59
本文主要是介绍Java实验1:基本的Java语法和面向对象入门:一道实现简单类,一道线性筛法,一道实现万年历的查日历和查星期几(西电实验),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一题:实现圆形类和矩形类我的解决方案:
import java.math.*; class Rectangle{ private int w, h; static int AllCnt; static int AllArea; public Rectangle(int w_, int h_) { w = w_; h = h_; AllCnt++; AllArea += w * h; } static void Show() { System.out.println("AllCnt = " + AllCnt + " " + " AllArea = " + AllArea); } int CirRec() { return 2 * (w + h); } int AreRec() { return w * h; } } class Circle{ final double pi = Math.acos(-1); private double r; protected Circle(double rr) { r = rr; } double GetCir() { return 2.0 * pi * r; } double GetAre() { return pi * r * r; } public void Show() { System.out.println("Circle = " + GetCir() + " Area = " + GetAre()); } } public class Main6 { public static void main(String[] args) { System.out.println("下面测试矩形类:"); Rectangle.AllArea = 0; Rectangle.AllCnt = 0; Rectangle r1 = new Rectangle(1, 2); Rectangle.Show(); System.out.println("r1 : Cir = " + r1.CirRec() + " Area = " + r1.AreRec()); Rectangle r2 = new Rectangle(3, 4); Rectangle.Show(); System.out.println("r2 : Cir = " + r2.CirRec() + " Area = " + r2.AreRec()); System.out.println("下面测试圆形类:"); Circle c1 = new Circle(2.0); c1.Show(); Circle c2 = new Circle(3.0); c2.Show(); } }第二题:1 到 100的素数之和
我的解决方案:线性筛法
import java.util.Arrays; public class Main1 { static int primeS() { int cnt = 0, ans = 0; boolean[] vis = new boolean[105]; int[] isPrime = new int[105]; Arrays.fill(isPrime, 0); Arrays.fill(vis, true); for(int i = 2;i <= 100;++i) { if(vis[i]) { isPrime[cnt++] = i; ans += i; } for(int j = 0;j < cnt && i * isPrime[j] <= 100;++j) { vis[i * isPrime[j]] = false; if(0 == i % isPrime[j]) break; } } return ans; } public static void main(String[] args) { int ans = primeS(); System.out.println(ans); } }第三题:
编写一个程序,程序提供两种功能:
- 根据用户输入的年份输出该年日历。
- 根据用户输入的日期,输出该天星期。
程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根据用户的功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。
介绍一种已知日期求星期的方法:
Weekday = (dd + 2 * dm + 3 * (dm + 1) / 5 + dy + dy / 4 - dy / 100 + dy / 400) % 7 + 1
dy = 年份
dm = 月份
dd = 天
这里需要注意的是:
如果月份小于3!需要借一年,给月份加上12!(重点!)
(这套计算方法我没看懂月份的计算,天和年的好理解!希望有懂得的伙伴们能够评论或者私信指点我一下!小弟感激不尽!!!)
当然如果不用这个公式,依赖循环也可写出答案。
我的解决方案:(这题我写了四十多分钟……有点难)
import java.util.Scanner; public class Main2 { static boolean checkLeap(int Ly) { if((0 == Ly % 4 && 0 != Ly % 100) || 0 == Ly % 400) return true; else return false; } public static int GetWeek(int dy, int dm, int dd) { return (dd + 2 * dm + 3 * (dm + 1) / 5 + dy + dy / 4 - dy / 100 + dy / 400) % 7 + 1; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请选择万年历的功能:1-> 查询日历? 2->查询某日期是星期几?"); int cmd = sc.nextInt(); if(1 == cmd) { System.out.println("请输入您要查询日历的年份:"); int Year = sc.nextInt(); int day = GetWeek(Year - 1, 13, 1); for(int i = 1;i <= 12;++i) { int TempDay = 0, cnt = 1; switch(i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: TempDay = 31; break; case 2: if(checkLeap(Year)) TempDay = 29; else TempDay = 28; break; default: TempDay = 30; } System.out.println("万年历:======第 " + i + " 月份:=========="); System.out.println("日\t一\t二\t三\t四\t五\t六"); boolean book = false; for(int j = 0;j < 6;++j) { for(int k = 0;k < 7;++k) { if(0 == j && k < day) { System.out.print("\t"); continue; } if(cnt > TempDay) { book = true; break; } System.out.print(cnt + "\t"); cnt++; } if(book) break; System.out.println(); } day = (day + TempDay) % 7; System.out.println(); System.out.println(); } } else { System.out.println("请按照如下格式:YYYY-MM-DD输入,如果非法输入将不受理!"); int dy = 0, dm = 0, dd = 0, i = 0, j = 0; @SuppressWarnings("unused") String getChar = sc.nextLine(); String DataInfo = sc.nextLine(); while(i < DataInfo.length()) { if(0 == dy) { j = i; while(j < DataInfo.length() && '-' != DataInfo.charAt(j)) { dy = dy * 10 + (DataInfo.charAt(j) - '0'); j++; } } else if(0 == dm) { j = i; while(j < DataInfo.length() && '-' != DataInfo.charAt(j)) { dm = dm * 10 + (DataInfo.charAt(j) - '0'); j++; } } else if(0 == dd) { j = i; while(j < DataInfo.length() && '-' != DataInfo.charAt(j)) { dd = dd * 10 + (DataInfo.charAt(j) - '0'); j++; } } i = ++j; } if(dm < 3) { dm += 12; dy--; } int AnsDay = GetWeek(dy, dm, dd); System.out.println("您输入的日期对应的星期是:" + AnsDay); } sc.close(); } }
这篇关于Java实验1:基本的Java语法和面向对象入门:一道实现简单类,一道线性筛法,一道实现万年历的查日历和查星期几(西电实验)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南