做做Java


前言

没有前言,练习题大多是蹭的软工专业的室友的><


1、遍历字符串string

蹭的题,非常基础,但是学到了方法charAt():用于返回指定索引处的字符,索引范围为从 0 到 length() - 1。

public class Ergodic {
    
    
    public static void main(String[] args) {
    
    
        String s = "abc123"; 
        int l = s.length();
        for(int i=0;i < l;i++)
        {
    
    
            System.out.println(s.charAt(i));
        }
    }
}

编程小白同时也在学习C#,所以有些用法一不小心会混淆了,比如:
1.String 数据类型在java中一定要大写S,而string不可以
一开始写的时候就因此一直无法调用出length方法;
2.变量要先定义并且初始化初始化,再用。


2、万年历

通用万年历
给定某年某月某日是星期几,能给出任何一年(12个月)的输出。
该方法以行为单位,输出各个月的相应行的数据。控制过程比较复杂,要求把每月需控制的参数用结构体定义。结构体中的属性大致包含:每月天数、一号周几。
int daysOfMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
实验步骤:
1.只按给定的daysOfMonth等数组(假定已知)来打印出对应年份的年历即可;
2.学习第四章类与对象后,自学Calendar类后,计算所用数组中的数据,完成整个程序。体会面向对象中类库的益处。

//Main
public class Main {
    
    
    public static void main(String[] args) {
    
    

        int year;

        Scanner in = new Scanner(System.in);

        System.out.println("请输入年:");
        year = in.nextInt();


        CalendarGet calendarGet = new CalendarGet(year);
        calendarGet.getData();  //getDate

    }
}


//Calendar
public class CalendarGet {
    
    
    private int day;
    private int month;
    private  int year;


    public CalendarGet(int year){
    
    

        this.year = year;
    }

    public  void getData(){
    
    
        CalendarBean calendarBean = new CalendarBean();
        calendarBean.setYear(year);
        for(int i = 0;i<12;i++){
    
    
            calendarBean.setMonth(i+1);
            String[] calendar =calendarBean.getCalendar();
            System.out.println("\n======================================");
            System.out.printf("\t\t     %d 月\t\t\n",i+1);    //printf:"%d"是一个int值的占位符,这个变量的参数在后面提供
            System.out.println("  日  一   二   三  四  五  六");  //println用法些许不同
            for(int j = 0; j < calendar.length; j++){
    
    
                if(j % 7 == 0)
                    System.out.println("");   //7个换行
                System.out.printf("%4s",calendar[j]);
            }
        }
    }

    //访问修饰符....封装性
    public int getDay() {
    
    
        return day;
    }

    public void setDay(int day) {
    
    
        this.day = day;
    }

    public int getMonth() {
    
    
        return month;
    }

    public void setMonth(int month) {
    
    
        this.month = month;
    }

    public int getYear() {
    
    
        return year;
    }

    public void setYear(int year) {
    
    
        this.year = year;
    }
}


//Calendar
public class CalendarBean {
    
    

    //初始化年月日月末
    int day = 0;
    int month = 0;
    int year = 0;
    int daysOfMonth[] = {
    
    31,28,31, 30, 31, 30, 31, 31, 30, 31, 30, 31};


    public void setYear(int year) {
    
    
        this.year = year;
    }

    public void setMonth(int month) {
    
    
        this.month = month;
    }

    public String[] getCalendar()
    {
    
       //输出格式6*7=42
        String[] data = new String[42];
        Calendar calendar = Calendar.getInstance();
        calendar.set(year,month-1,1);

        //计算1号的星期
        int first = calendar.get(Calendar.DAY_OF_WEEK)-1;
        if (month == 2)
            if(((year%4 == 0) && (year%100 !=0)) || (year %400 == 0))
                day = daysOfMonth[month-1]+1;
            else
                day = daysOfMonth[month-1];
         else
             day = daysOfMonth[month-1];

         //把1号之前的利用空格存上
        for (int i =0;i<first;i++)
            data[i] = " ";

        //日期存入
        for (int i = first,n=1;i<first+day;i++){
    
    
            data[i] = String.valueOf(n);
            n++;
        }

        //剩余数组填满
        for (int i = first+day;i<data.length;i++)
            data[i] = " ";
        return data;
    }
}


输入2020运行界面
在这里插入图片描述

原来这道作业题重点在样式的显示实现上
在这里插入图片描述
在这里插入图片描述

//代码是室友的,我还没写想着有空再重看这题
class MyCalendar{
    
    
            int[] daysOfMonth =new int[12];
            int[] aOutputControl =new int[12];
            int[] ctlofMaxHeight ={
    
    6,6,6,6};
            public void prtCalendar(int year){
    
    
                for(int i=0;i<12;i++){
    
    
                    daysOfMonth[i]=getNumberOfDaysInMonth(year,i+1);
                    if((getStartDay(year,i+1)+1-7)<=-6)
                        aOutputControl[i]=getStartDay(year,i+1)+1;
                    else aOutputControl[i]=getStartDay(year,i+1)+1-7;
                }
                int col=0,week,nmonth,roe=0;
                for(roe=0;roe<4;roe++){
    
    
                    for(int t=0;t<3;t++){
    
    
                        System.out.print("----------------------------- ");
                    }
                    System.out.println();
                    for(int t=0;t<3;t++){
    
    
                        System.out.print(" Sun Mon Tue Wed Thu Fri Sat  ");
                    }
                    System.out.println();
                    for(int i=0;i<ctlofMaxHeight[roe];i++){
    
    
                        for(col=0;col<3;col++){
    
    
                            nmonth=roe*3+col;
                            for(week=0;week<7;week++){
    
    
                                if(aOutputControl[nmonth]<=0||aOutputControl[nmonth]>daysOfMonth[nmonth])
                                    System.out.printf("%4c",' ');
                                else
                                    System.out.printf("%4d",aOutputControl [nmonth]);
                                aOutputControl[nmonth]++;
                            }
                            System.out.print("  ");
                        }
                        System.out.println();
                    }
                }
            }
            public static int getStartDay(int year, int month) {
    
    
                final int START_DAY_FOR_JAN_1_1800 = 3;
                int totalNumberOfDays = getTotalNumberOfDays(year, month);
                return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) % 7;
            }
            public static int getTotalNumberOfDays(int year, int month) {
    
    
                int total = 0;
                for (int i = 1800; i < year; i++)
                    if (isLeapYear(i))
                        total = total + 366;
                    else
                        total = total + 365;
                for (int i = 1; i < month; i++)
                    total = total + getNumberOfDaysInMonth(year, i);
                return total;
            }
            public static int getNumberOfDaysInMonth(int year, int month) {
    
    
                if (month == 1 || month == 3 || month == 5 || month == 7 ||
                        month == 8 || month == 10 || month == 12)
                    return 31;
                if (month == 4 || month == 6 || month == 9 || month == 11)
                    return 30;
                if (month == 2) return isLeapYear(year) ? 29 : 28;
                return 0;
            }
            public static boolean isLeapYear(int year) {
    
    
                return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
            }
        }
        class Test {
    
    
            public static void main(String args[]){
    
    
                Scanner input = new Scanner(System.in);
                System.out.print("请输入查询的年份:\n");
                int year = input.nextInt();
                MyCalendar objCalendar;
                objCalendar=new MyCalendar();
                objCalendar.prtCalendar(year);
            }
        }

输出:
在这里插入图片描述


3、打印九九乘法表

package struct;

public class ForDemo01 {
    
    
    public static void main(String[] args) {
    
    
        for (int i = 1; i <= 9; i++) {
    
    
            for (int j =1;j<=i;j++){
    
    
                System.out.print(j+"*"+i+"="+(j*i)+"\t");
            }
            System.out.println();
        }
    }
}

输出
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/bocaiaichila/article/details/109005912