import java.util.*;
class day3{
public static void main(String[] args){
//System.out.println(getMoney(310));
//getRabbit(20);
//printSu(1001);
//getScore();
/* int[][] arrs = getArrs(7,5);
System.out.println("\n交换位置前的数组是:");
printArrs(arrs);
changeArr(arrs);
System.out.println("交换位置后的数组是:");
printArrs(arrs);
*/
testNextDate(2012,12,5,70);
}
/*
方法作用:判断是否为闰年,如果为闰年则返回true
参数:int
返回值:boolean
*/
public static boolean isRun(int year){
if(year%4==0&&year%400!=0){
return true;
}else{
return false;
}
}
/*
方法作用:获得当前年月的天数
参数:int ,int
返回值:int
*/
public static int getDays(int year,int month){
int days = 0;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: days=31;
break;
case 2: days = isRun(year)? 29 :28;
break;
case 4:
case 6:
case 9:
case 11: days=30;
break;
}
return days;
}
/*
方法作用:获得当前年月日的下一天,nextDay问题
参数:int,int,int
返回值:ArrayList<String>
*/
public static ArrayList<String> nextDate(int nowYear,int nowMonth,int nowDay){
ArrayList<String> list = new ArrayList<String>();
if(nowMonth>0&&nowMonth<13&&nowDay>0&&nowDay<=getDays(nowYear,nowMonth)){
int nextDay;
int nextMonth;
int nextYear;
if(nowDay ==getDays(nowYear,nowMonth)){
if(nowMonth==12){
nextYear=nowYear+1;
nextMonth=1;
nextDay=1;
}else{
nextYear = nowYear;
nextMonth = nowMonth+1;
nextDay = 1;
}
}else{
nextYear=nowYear;
nextMonth=nowMonth;
nextDay=nowDay+1;
}
list.add(nextYear+"");
list.add(nextMonth+"");
list.add(nextDay+"");
}else{
list.add("日期格式错误");
}
return list;
}
/*
方法作用:将方法nextDate()的输出值转化为int数组
参数:ArrayList<String>
返回值:int[]
*/
public static int[] getNum(ArrayList<String> arr){
int[] num = new int[3];
num[0]=Integer.parseInt(arr.get(0));
num[1]=Integer.parseInt(arr.get(1));
num[2]=Integer.parseInt(arr.get(2));
return num;
}
/*
方法作用:测试nextDate()方法
参数:int,int,int,int
返回值:void
*/
public static void testNextDate(int year,int month,int day,int count){
int[] num = {year,month,day};
ArrayList<String> date = new ArrayList<String>();
for(int i=0;i<count;i++){
date =nextDate(num[0],num[1],num[2]);
System.out.println(date);
num =getNum(date);
}
}
/*
方法作用:计算出租车费
参数:int
返回值:double
*/
public static double getMoney(int num){
int more=0;
if(num<=3000){
return 8;
}else{
more=((num-3000)/500)+1;
return 8+more*1.2;
}
}
/*
方法作用:计算N个月后的兔子对数,不死神兔问题
参数:int
返回值:int[]
*/
public static int[] getRabbit(int num){
int[] arr = new int[num];
arr[0]=1;
arr[1]=1;
for(int i=2;i<arr.length;i++){
arr[i]=arr[i-2]+arr[i-1];
}
System.out.println("第"+num+"个月兔子对数为:"+arr[num-1]);
return arr;
}
/*
方法作用:判断输入数是否为素数
参数:int
返回值:int[]
*/
public static boolean isSu(int num){
for(int i=2;i<num;i++){
if(num%i==0){
return false;
}
}
return true;
}
/*
方法作用:打印2-N的素数
参数:int
返回值:void
*/
public static void printSu(int num){
for(int i=2;i<num;i++){
if(isSu(i)==true){
System.out.println(i);
}
}
}
/*
方法作用:随机生成0-100(包含边界)的x*y二维数组
参数:int,int
返回值:int[][]
*/
public static int[][] getArrs(int x,int y){
int[][] arr = new int[x][y];
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
arr[i][j]=(int)Math.round(Math.random()*100);
}
}
return arr;
}
/*
方法作用:计算并输出二维数组的每一列的平均值
参数:int[][]
返回值:int[]
*/
public static int[] getAvg(int[][] num){
int[] avg = new int[num[0].length];
for(int j=0;j<num[0].length;j++){
for(int i=0;i<num.length;i++){
avg[j]+=num[i][j];
}
avg[j]/=num.length;
System.out.print(avg[j]+"\t\t");
}
return avg;
}
/*
方法作用:打印二维数组
参数:int[][]
返回值:void
*/
public static void printArrs(int[][] arr){
//System.out.println("core C++\t\tcoreJava\t\tServlet\t\tJSP\t\tEJB");
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
/*
方法作用:打印二维数组,并计算打印每一行的和、每一列的平均值
参数:int[][]
返回值:void
*/
public static void printArr(int[][] arr){
//System.out.println("core C++\t\tcoreJava\t\tServlet\t\tJSP\t\tEJB");
int[] sum=new int[arr.length];
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t\t");
sum[i]+=arr[i][j];
}
System.out.print(sum[i]+"\n");
}
System.out.println("==========================");
getAvg(arr);
}
public static void getScore(){
int[][] score = getArrs(20,5);
printArr(score);
}
/*
方法作用:获取二维数组最大、最小值,打印原位置并交换
参数:int[][]
返回值:void
*/
public static void changeArr(int[][] arr){
int[] min =new int[3];
int[] max = new int[3];
min[0]=max[0]=arr[0][0];
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
if(max[0]<arr[i][j]){
max[0] = arr[i][j];
max[1] =i;
max[2] =j;
}
if(min[0]>arr[i][j]){
min[0]=arr[i][j];
min[1] =i;
min[2] =j;
}
}
}
System.out.println("原来最大值是"+max[0]+",位置在["+max[1]+","+max[2]+"]\n"+
"原来最小值是"+min[0]+",位置在["+min[1]+","+min[2]+"]");
arr[max[1]][max[2]]=min[0];
arr[min[1]][min[2]]=max[0];
}
}
Java基础练手题目
最新推荐文章于 2024-05-03 03:50:53 发布