java基础/模块一/编程案例(要求语言:java)

一.编程题 提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。

/**
*编程实现: 提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。
*
*/
import java.util.Scanner;
public class JudgeDateTest{
    public static void main(String[] args){
        //1.初始化信息
        int[] monthArr = {31,28,31,30,31,30,31,31,30,31,30,31};
        //2.接收用户输入信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年:");
        int year = sc.nextInt();
        if(year%4==0 &&year%100 !=0){//判断是否为闰年
            monthArr[1] = 29;
        }
        System.out.println("请输入月:");
        int month = sc.nextInt();
        if(month<1||month>12){
            System.out.println("月份输入有误");
            return;
        }
        System.out.println("请输入日:");
        int day = sc.nextInt();
        if(day>monthArr[month-1]){
            System.out.println("天数输入有误");return;
        }
        //3.计算是一年中第几天
        int days = 0;
        for(int i=0;i<month-1;i++){
            days+= monthArr[i];
        }
        days += day;
        //4.打印结果
        System.out.println(year+"年"+month+"月"+day+"日是一年中的第"+days+"天");
    }
}

 

 

二:编程题 编程找出 1000 以内的所有完数并打印出来。 所谓完数就是一个数恰好等于它的因子之和,如:6=1+2+3

/**
* 编程实现: 找出 1000 以内的所有完数并打印出来。 所谓完数就是一个数恰好等于它的因子之和,如:6=1+2+3
*/
import java.lang.Math;
public class PerfectNumTest{
    public static void main(String[] args){
        System.out.println("1000以内的完数分别是:");
        for(int i=1;i<=1000;i++){
            int sum = 0;
            for(int j=1;j<= i/2;j++){//找到数的因子
                if(i%j==0){
                    sum += j;
                }
            }
            if(sum == i){//是完数
                System.out.println(i);
            }
        }
    }
}
 

 

三:编程题 实现双色球抽奖游戏中奖号码的生成,中奖号码由 6 个红球号码和 1 个蓝球号码组成。 其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。 其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。

/**
*
*编程实现
*实现双色球抽奖游戏中奖号码的生成,中奖号码由 6 个红球号码和 1 个蓝球号码组成。 
*其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。
*其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。
*/
import java.lang.Math;
import java.util.Arrays;
public class WinningNumbersTest{
    public static void main(String[] args){
        System.out.println("红球中奖号码是:");
        int[] redBall = new int[6];
        int j= 0;
        for(int i=1;i<=6;i++){
            int randNum = (int)(Math.random()*33 +1);
            if(Arrays.binarySearch(redBall,randNum)<0){
                redBall[j++] = randNum;
            }
        }
        System.out.println(Arrays.toString(redBall));
        int blueBall = (int)(Math.random()*16 +1);
        System.out.println("蓝球中奖号码是:"+blueBall);
    }
}

 

 

四:编程题 自定义数组扩容规则,当已存储元素数量达到总容量的 80%时,扩容 1.5 倍。 例如,总容量是 10,当输入第 8 个元素时,数组进行扩容,容量从 10 变 15。

/**
*编程实现 自定义数组扩容规则,当已存储元素数量达到总容量的 80%时,扩容 1.5 倍。
* 例如,总容量是 10,当输入第 8 个元素时,数组进行扩容,容量从 10 变 15。
*/
import java.util.Scanner;
import java.util.Arrays;
public class ExtendArrayRule{
    public static void main(String[] args){
        //1.输入数组原始容量
        System.out.println("请输入数组原始容量");
        Scanner sc = new Scanner(System.in);
        int startLength = sc.nextInt();
        int newLength = 0;
        //2.初始化数组
        int[] arr = new int[startLength];
        //3.开始输入数组元素
        System.out.println("请向数组中输入整数,若输入其他数据输入结束:");
        int i =0;
        while(sc.hasNextInt()){
            if((i+1)*1.0/startLength >=0.8){//进行数组扩容
                newLength = (int)(startLength*1.5);//计算扩容后的数组长度
                int[] newarr = new int[newLength];//创建新扩容数组
                //将旧数据搬到新数组中
                for(int j=0;j<i;j++){
                    newarr[j] = arr[j];    
                }
                arr = newarr;//将新的数组地址指向旧的变量
                startLength = newLength;//将新的数组长度指给旧的变量
            }
            arr[i++] = sc.nextInt();
            System.out.println("请向数组中输入整数,若输入其他数据输入结束:");
        }
        System.out.println("素组元素为:"+Arrays.toString(arr));
    }
}

 

 

五:程题 使用二维数组和循环实现五子棋游戏棋盘的绘制,具体如下:

/**
*编程实现:使用二维数组和循环实现五子棋游戏棋盘的绘制。
*
*/
public class GobangPrintTest{
    public static void main(String[] args){
        boolean flagi  =false;
        boolean flagj  =false;
        for(int i= 0;i<='f'+1;i++){
            for(int j =0 ;j<= 'f' +1;j++){
                String str = "";
                if(i ==0&&j==0){
                    str ="  ";
                } else if ( i==0&&j!=0){
                    str = flagj ? (char)(j-1)+" ": (j-1)+" ";
                } else if(i!=0&&j==0){
                    str = flagi ? (char)(i-1)+" " : (i-1)+" ";
                } else{
                    str = "+ ";
                }
                System.out.print(str);
                if(j==10){
                    flagj =true;
                    j = 'a';
                }
                
            }
            System.out.println("");
            if(i==10){
                flagi =true;
                i = 'a';
            }
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值