文章目录
前言
没有前言,练习题大多是蹭的软工专业的室友的><
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();
}
}
}
输出