国庆假期到了,却没觉得有多少轻松愉悦。
独在异乡为异客,猛的发现自己不再喜欢节日生日这类特殊的节点。上课学习的寻常日子,才更容易觉得心安。或许越是特别,越是平静吧。
其实有时会忘记了孤独,睡前与自己独处的时光很受用,看书,写作,健身,编程,不觉得这世界缺少什么。以为是自己强大到可以让日常安稳。但假日前夕,一切都空荡荡的,几乎所有人都在计划做些什么,灯管儿像镁光灯一样,只在漆黑中照亮了自己。才知道,并没有征服甚至习惯了孤独,只是它没来而已。平时会觉得这样的世界只属于独我,是自在的,现在凝望周边黑似深渊的寂寥,有些胸闷堵心。生活,不能让自己破防,很难,割舍似的放下,这个过程不好受。所以虽心往之,但我按住自己,不能再冒着风寒去扰动。
关灯,离开,平静地貌似往常一般进了电梯。遇到一个拿着外卖坐反了的同学。想故作轻松地说一声,放假了,还整呀。可直到电梯门再开,也只是最后一相视,而去。走在半路,突然想拐到常去的那家超市,买点打折的水果。常听说,孤独,本身就是一件挺酷的事,我却从来都很难感同身受。但超市入口霓虹闪烁的大屏下,倒是突然觉得前坪上自己的影子,有那么几分酷酷的。
问假期准备做啥?学习
我说:挺好的
package com.situ9_30;
import java.util.Calendar;
public class National_Day_operation {//国庆节作业 wqw
//java2109
public static void main(String[] args) {
// TODO 自动生成的方法存根
//1.霍金预言,2215 年地球将面临灾难性毁灭。计算距离霍金预言末日,
//还剩余多少天,多少小时,多少分钟,多少秒。
//格式:12 天 05 时 43 分 24 秒,将结果进行输出。
answer1();
System.out.println();
System.out.println();
//2.打印一个15层高的杨晖三角。
answer2(15);//输入层数
System.out.println();
System.out.println();
//3.将一个正整数分解质因数。例如:输入90,打印出 90 = 2×3×3×5。
answer3(11); //输入要分解的数
System.out.println();
System.out.println();
//4.将两个数组进行首尾拼接。
answer4(6, 5);//两个随机数组长度
System.out.println();
System.out.println();
//5.将一个数组的所有元素整体右移 3 位,保持数组长度不变
// 超出数组长度的,自动添加到数组头部。
answer5(3);//输入向右移动位数
System.out.println();
System.out.println();
//附加题:实现两个大数的乘积运算。
answer6(4, 4); //输入大数位数
}
private static void answer1() {//霍金预言
Calendar cal=Calendar.getInstance();
int y=cal.get(Calendar.YEAR);
int m=cal.get(Calendar.MONTH);
int d=cal.get(Calendar.DATE);
int h=cal.get(Calendar.HOUR_OF_DAY);
int mi=cal.get(Calendar.MINUTE);
int s=cal.get(Calendar.SECOND);
//2215
int year,month=0,day = 0,hour,min,sec;
//年
for( year=y ;year<2215;year++) {//2021-2215
if((year%4==0&&year%100!=0)||year%400==0) {
day=day+366;
}else {
day=day+365;
}
}
//月
for( month=m+1 ;month<=12;month++) {
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12))
day=31+day;
else if((month==4||month==6||month==9||month==11))
day=30+day;
else if(month==2)
{
if((year%4==0&&year%100!=0)||year%400==0)//闰年
day=29+day;
else
day=28+day;
}
}
//日
month=m;
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12))
day=day+31-d;
else if((month==4||month==6||month==9||month==11))
day=day+30-d;
else if(month==2)
{
if((year%4==0&&year%100!=0)||year%400==0)//闰年
day=day+29-d;
else {
day=day+28-d;}
}
//小时
hour=23-h;
//分钟
min=59-mi;
//秒
sec=60-s;
System.out.print("现在时刻是"+y+"年"+m+"月"+d+"日"+h+"时"+mi+"分"+s+"秒");
System.out.println("距离霍金预言时间还有"+day+"日"+hour+"时"+min+"分"+sec+"秒");
}
//------------------------------------------------------------------------
private static void answer2(int n) {//杨辉三角
// TODO 自动生成的方法存根
// 创建一个二维数组,此二维数组用来存放杨辉三角中每一行的值
int[][] array = new int[n][n];
// 给数组元素赋值
for (int i = 0; i < array.length; i++) {
// 每一行的值
array[i] = new int[i + 1];
// 给首末元素赋值
array[i][0] = array[i][i] = 1;
// 给每行的非首末元素赋值
if (i > 1) {
for (int j = 1; j < array[i].length - 1; j++) {
array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
}
}
}
//输出
for (int i = 0; i < array.length; i++) {
// 输出杨辉三角数字前面的空格
for (int j = 0; j < array.length - 1 - i; j++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
// 用空格填补空位置
System.out.print(" ");
// 输出,位宽是3,左对齐
System.out.printf("%-3d", array[i][j]);
}
System.out.println();
}
}
//------------------------------------------------------------------------
private static void answer3(int m) {//正整数分解质因数。
// TODO 自动生成的方法存根 例如:输入60,打印出 60 = 2×2×3×5
if(m==1||m==2||m==3||m==5||m==7) {
System.out.println(m+"无质因数");
}else {
int k=0; int m1=m; int m2=m;
for(int i=2;i!=m1;) {//统计有几个可分解的质因数
if(m1%i==0) {
m1=m1/i;
k++;
}else{
i++;
}
if(m1==i) k++;
}
int j=0;
// System.out.println(k);
int[] a=new int[k];//质因数数量
for(int i=2;i<=m1;) {
if(m2 % i ==0) {
m2=m2/i;
a[j]=i;
j++;
if(m2==i) a[j]=i;
}else{
i++;
}
}
if(k==0||k==1) {
System.out.println(m+"无质因数");
}else {
System.out.print(m+"=");
for(int i=0;i<a.length;i++) {
if(i==0) System.out.print(a[i]);
else System.out.print("*"+a[i]);
}
}
}
}
//------------------------------------------------------------------------
private static void answer4(int m,int n) {//将两个数组进行首尾拼接。
// TODO 自动生成的方法存根
int[] a = new int[m];
for(int i= 0; i<a.length; i++) {
a[i] = (int)( Math.random()*Math.random()*100);
}
int[] b = new int[n];
for(int i= 0; i<b.length; i++) {
b[i] = (int)( Math.random()*Math.random()*100);
}
//------------随机生成两个数组-------
int max=a.length+b.length;
int[] c = new int[max];
for(int i= 0; i<a.length; i++) {
c[i] = a[i];
}
for(int i= a.length; i<c.length; i++) {
c[i] = b[i-a.length];
}
//首尾相接,输出
System.out.println("数组1");
for(int i= 0; i<a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("数组2");
for(int i= 0; i<b.length; i++) {
System.out.print(b[i]+" ");
}
System.out.println();
System.out.println("数组首尾相接");
for(int i= 0; i<c.length; i++) {
System.out.print(c[i]+" " );
}
}
//------------------------------------------------------------------------
private static void answer5(int k) {//将一个数组的所有元素整体右移 3 位
// TODO 自动生成的方法存根
int[] nums = new int[9];
for(int i= 0; i<nums.length; i++) {
nums[i] = (int)( Math.random()*Math.random()*100);
}//生成随机数组
//新数组a记录移动后
int n=nums.length;
int[] a = new int[nums.length + k];
//移动k位
for(int i=0;i<nums.length;i++){
a[(i+k)%n]=nums[i];
}
//------------输出
System.out.println("随机数组");
for(int i=0;i<nums.length;i++) {
System.out.print(nums[i]+" ");
}
System.out.println();
System.out.println("向右移动"+k+"位后的数组");
for(int i=0;i<nums.length;i++) {
System.out.print(a[i]+" ");
}
}
//------------------------------------------------------------------------
private static void answer6(int m,int n) {//大数相乘(本质上是字符串相乘)
//输入大数字再让各个位数转换为数组索引有些麻烦且困难,暂且取巧数组相乘
// 两个大数a,b,一个结果c
int[] a = new int[m];
for(int i= 0; i<a.length; i++) {
a[i] = (int)( Math.random()*10);
}
int[] b = new int[n];
for(int i= 0; i<b.length; i++) {
b[i] = (int)( Math.random()*10);
}
int max=a.length+b.length;
int[] c = new int[max];
//-------------------------
if (a.equals("0") || b.equals("0")) {
System.out.println(0);
}//相乘如果有零为零
else {
//------------------------------------------------------相乘计算
// ===================================
//
// 具体的写不出来,只有思路
//
// ===================================
//输出
System.out.println("第一个大数");
for(int i= 0; i<a.length; i++) {
System.out.print(a[i]);
}
System.out.println();
System.out.println("第二个大数");
for(int i= 0; i<b.length; i++) {
System.out.print(b[i]);
}
System.out.println();
System.out.println("大数相乘结果");
for(int i= 0; i<c.length; i++) {
System.out.print(c[i]);
}
}
}
//------------------------------------------------------------------------
}
|