dfghjkl

7-1 伪随机数

在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long。Random的对象有两种构建方式:带种子和不带种子。不带种子的方式将会返回随机的数字,每次运行结果不一样。无论程序运行多少次,带种子方式构建的Random对象会返回一样的结果。

请编写程序,使用第一种方式构建Random对象,并完成下面输入输出要求。

输入格式:

在一行中输入3个不超过10000的正整数n,m,k。

输出格式:

在一行中输出以k为种子建立的Random对象产生的第n个0到m-1之间的伪随机数。

输入样例:

10 100 1000

输出样例:

50
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int res=0;
        int n=in.nextInt();
        int m=in.nextInt();
        int k=in.nextInt();
        Random r=new Random(k);//
        for(int i=0;i<n;i++){
            res=r.nextInt(m);
        }
        System.out.println(res);
    }
}

7-2 jmu-Java-03面向对象基础-01-构造方法与toString

定义一个有关人的Person类,内含属性:
String nameint ageboolean genderint id,所有的变量必须为私有(private)。
注意:属性顺序请严格按照上述顺序依次出现。

1.编写无参构造函数:

  • 打印"This is constructor"。
  • 将name,age,gender,id按照name,age,gender,id格式输出

2.编写有参构造函数

依次对name,age,gender赋值。

3.覆盖toString函数:

按照格式:类名 [name=, age=, gender=, id=]输出。建议使用Eclipse自动生成.

4.对每个属性生成setter/getter方法

5.main方法中

  • 首先从屏幕读取n,代表要创建的对象个数。
  • 然后输入n行name age gender , 调用上面2编写的有参构造函数新建对象。
  • 然后将刚才创建的所有对象逆序输出。
  • 接下来使用无参构造函数新建一个Person对象,并直接打印该对象。

输入样例:

3
a 11 false
b 12 true
c 10 false

输出样例:

Person [name=c, age=10, gender=false, id=0]
Person [name=b, age=12, gender=true, id=0]
Person [name=a, age=11, gender=false, id=0]
This is constructor
null,0,false,0
Person [name=null, age=0, gender=false, id=0]
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        Person[] p=new Person[n];
        for(int i=0;i<n;i++){
            String name=in.next();
            int age=in.nextInt();
            boolean gender=in.nextBoolean();
            p[i]=new Person(name,age,gender);
        }
        for(int i=n-1;i>=0;i--){
            System.out.println(p[i].toString());
        }
        System.out.println(new Person());
    }
}
    class Person{
        private String name;
        private int age;
        private boolean gender;
        private int id;
        public Person(){
            System.out.println("This is constructor");
            System.out.println(name+","+age+","+gender+","+id);
            System.out.println("Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]");
        }
        public Person(String name,int age,boolean gender){
            this.name=name;
            this.age=age;
            this.gender=gender;
        }
        public void setterName(String name){
            this.name=name;
        }
        public void setterAge(int age){
            this.age=age;
        }
        public void setterGender(boolean gender){
            this.gender=gender;
        }
        public void setterId(int id){
            this.id=id;
        }
        public String getterName(){
            return name;
        }
        public int getterAge(){
            return age;
        }
        public boolean getterGender(){
            return gender;
        }
        public int getterId(){
            return id;
        }
        public String toString(){
            return "Person "+"[name="+name+", age="+age+", gender="+gender+", id="+id+"]";
        
    }
}

7-3 jmu-Java-03面向对象基础-02-构造方法与初始化块

1.定义一个Person类

属性:String nameboolean genderint ageint id ,所有的变量必须为私有(private)。
无参构造函数:Person()功能:打印This is constructor 。
有参构造函数:Person(name, gender, age) 功能:给属性赋值。
建议:使用Eclipse自动生成toString方法

2.定义类的初始化块

为Person类加入初始化块,在初始化块中对id属性赋值,并且要保证每次的值比上次创建的对象的值+1。然后在下一行打印This is initialization block, id is ... 其中...是id的值。
提示:可为Person类定义一个static属性来记录所创建的对象个数。

3.编写静态初始化块

打印This is static initialization block

4.编写main方法

  • 首先输入n,代表要创建的对象数量。
  • 然后从控制台分别读取n行的name age gender, 并调用有参构造函数Person(name, age, gender)新建对象 。
  • 将创建好的n个对象逆序输出(即输出toString()方法)。
  • 使用无参构造函数新建一个Person对象,然后直接打印该对象。

思考

初始化类与对象有几种方法,构造函数、初始化块、静态初始化块。这三种方法执行的先后顺序是什么?各执行几次。

输入样例:

3
a 11 false
b 12 true
c 10 false

输出样例:

This is static initialization block
This is initialization block, id is 0
This is initialization block, id is 1
This is initialization block, id is 2
Person [name=c, age=10, gender=false, id=2]
Person [name=b, age=12, gender=true, id=1]
Person [name=a, age=11, gender=false, id=0]
This is initialization block, id is 3
This is constructor
null,0,false,3
Person [name=null, age=0, gender=false, id=3]
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        Person[] p=new Person[n];
        for(int i=0;i<n;i++){
            String name=in.next();
            int age=in.nextInt();
            boolean gender=in.nextBoolean();
            p[i]=new Person(name,gender,age);
        }
        for(int i=n-1;i>=0;i--){
            System.out.println(p[i].toString());
        }
        System.out.println(new Person());
    }
}

class Person{
    private String name;
    private boolean gender;
    private int age;
    private int id;
    static int a =0;
    //静态初始化块
    static{
        System.out.println("This is static initialization block");
    }
    //类的初始化块
    {
        this.setterId(a++);
        System.out.println("This is initialization block, id is " + this.getterId());
    }

    public Person(){
        System.out.println("This is constructor");
        System.out.println(name+","+age+","+gender+","+id);
        //System.out.println("Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]");
    }
    public Person(String name,boolean gender,int age){
        this.name=name;
        this.age=age;
        this.gender=gender;
    }
    public void setterName(String name){
        this.name=name;
    }
    public void setterAge(int age){
        this.age=age;
    }
    public void setterGender(boolean gender){
        this.gender=gender;
    }
    public void setterId(int id){
        this.id=id;
    }
    public String getterName(){
        return name;
    }
    public int getterAge(){
        return age;
    }
    public boolean getterGender(){
        return gender;
    }
    public int getterId(){
        return id;
    }
    public String toString(){
        return "Person "+"[name="+name+", age="+age+", gender="+gender+", id="+id+"]";
    }
}

7-4 复数类的定义

编写一个复数类,可以进行复数加法和减法运算。编写一个包含main方法的类测试该复数类。要求该复数类至少包含一个无参的构造方法和一个带参的构造方法;数据成员包括复数的实部和虚部,为double类型;包括两个方法,分别实现复数的加法和减法运算。测试代码如下:

    public static void main(String [] args){
            Complex a=new Complex();
            Complex b=new Complex();
            Scanner in=new Scanner(System.in);
            a.setRealPart(in.nextDouble());
            a.setImaginaryPart(in.nextDouble());
            b.setRealPart(in.nextDouble());
            b.setImaginaryPart(in.nextDouble());
            System.out.println(a);
            System.out.println(b);
            System.out.println(a.add(b));
            System.out.println(a.sub(b));      
}

输入格式:

输入两个复数。输入为两行,每一行为一个复数的实部和虚部,用空格隔开。

输出格式:

输出复数加法和减法结果。输出为4行,第一行和第二行输出两个复数,第三行为两个复数的加法运算结果,第四行为减法运算结果。

输入样例:

在这里给出两组输入。例如:

1 2
3 4

-1 2
1 2

输出样例:

在这里给出相应的输出。例如:

1.0+2.0i
3.0+4.0i
4.0+6.0i
-2.0-2.0i

-1.0+2.0i
1.0+2.0i
4.0i
-2.0
import java.util.*;
public class Main{
       public static void main(String [] args){
            Complex a=new Complex();
            Complex b=new Complex();
            Scanner in=new Scanner(System.in);
            a.setRealPart(in.nextDouble());
            a.setImaginaryPart(in.nextDouble());
            b.setRealPart(in.nextDouble());
            b.setImaginaryPart(in.nextDouble());
            System.out.println(a);
            System.out.println(b);
            System.out.println(a.add(b));
            System.out.println(a.sub(b));      
    }
}

class Complex{
    private double real;
    private double image;
    public Complex(){}
    public Complex(double real,double image){
        this.real=real;
        this.image=image;
    }
    public void setRealPart(double real){
        this.real=real;
    }
    public void setImaginaryPart(double image){
        this.image=image;
    }
    public double getRealPart(){
        return this.real;
    }
    public double getImaginaryPart(){
        return this.image;
    }
    public Complex add(Complex b){
        return new Complex(real+b.real,image+b.image);
    }
    public Complex sub(Complex b){
        return new Complex(real-b.real,image-b.image);
    }
    public String toString() { //toString()方法
		if(real==0&&image==0) {
			return 0+"";
		}else if(real==0&&image!=0) {
			return image+"i";
		}else if(real!=0&&image>0) {
			return real + "+" + image + "i";
		}else if(real!=0&&image==0) {
			return real+"";
		}else {
			return real +""+ image + "i";			
		}

	}
}

7-5 jmu-Java-01入门-开根号

逐步逼近法说明:从0开始逐步累加步长值。

步长=0.0001,epsilon(误差)=0.0001

循环继续的条件:

平方值<x 且 |x-平方值| > epsilon

###说明与参考

  1. 数值输出保留6位小数,使用System.out.printf("%.6f\n")
  2. 求平方,参考Math.pow函数。
  3. 输入值<0时,返回Double.NaN

输入格式:

任意数值

输出格式:

对每一组输入,在一行中输出其开根号。保留6位小数

输入样例:

-1
0
0.5
0.36
1
6
100
131

输出样例:

NaN
0.000000
0.707100
0.600000
1.000000
2.449500
10.000000
11.445600
import java.util.*;
import java.util.*;
public class Main{
   public static void main(String [] args){
        //double a=0.0001;
        double b=0.0001;
        Scanner in=new Scanner(System.in);
        while(true){
            double x=in.nextDouble();
            double a=0;
            if(x<0){
                System.out.println("NaN");
            }
            else{
                while(((a*a<x))&&(Math.abs(x-a*a)>0.0001)){
                    a+=0.0001;
                }
                System.out.printf("%.6f\n",a);
            }
            
        }     
    }
}

 

7-6 jmu-Java-01入门-取数字浮点数

本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。

输入格式:

每行一个整数或者浮点数。保证在浮点数范围内。

输出格式:

整数或者浮点数中的数字之和。题目保证和在整型范围内。

输入样例:

-123.01
234

输出样例:

7
9

 

import java.util.*;
public class Main{
   public static void main(String [] args){
        Scanner in=new Scanner(System.in);
        while(true){
            String str=in.nextLine();
            char[] ch=str.toCharArray();
            int sum=0;
            for(int i=0;i<ch.length;i++){
                if(ch[i]!='+'&&ch[i]!='-'&&ch[i]!='.'){
                    int tmp=Integer.valueOf(ch[i]-'0');
                    sum+=tmp;
                }
            }
            System.out.println(sum);
            
        }     
    }
}

 

7-7 日期类设计

参考题目3和日期相关的程序,设计一个类DateUtil,该类有三个私有属性year、month、day(均为整型数),其中,year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] , 除了创建该类的构造方法、属性的getter及setter方法外,需要编写如下方法:

public boolean checkInputValidity();//检测输入的年、月、日是否合法
public boolean isLeapYear(int year);//判断year是否为闰年
public DateUtil getNextNDays(int n);//取得year-month-day的下n天日期
public DateUtil getPreviousNDays(int n);//取得year-month-day的前n天日期
public boolean compareDates(DateUtil date);//比较当前日期与date的大小(先后)
public boolean equalTwoDates(DateUtil date);//判断两个日期是否相等
public int getDaysofDates(DateUtil date);//求当前日期与date之间相差的天数
public String showDate();//以“year-month-day”格式返回日期值

应用程序共测试三个功能:

  1. 求下n天
  2. 求前n天
  3. 求两个日期相差的天数

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int year = 0;
        int month = 0;
        int day = 0;
 
        int choice = input.nextInt();
 
        if (choice == 1) { // test getNextNDays method
            int m = 0;
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());
 
            DateUtil date = new DateUtil(year, month, day);
 
            if (!date.checkInputValidity()) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            m = input.nextInt();
 
            if (m < 0) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            System.out.print(date.getYear() + "-" + date.getMonth() + "-" + date.getDay() + " next " + m + " days is:");
            System.out.println(date.getNextNDays(m).showDate());
        } else if (choice == 2) { // test getPreviousNDays method
            int n = 0;
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());
 
            DateUtil date = new DateUtil(year, month, day);
 
            if (!date.checkInputValidity()) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            n = input.nextInt();
 
            if (n < 0) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
 
            System.out.print(
                    date.getYear() + "-" + date.getMonth() + "-" + date.getDay() + " previous " + n + " days is:");
            System.out.println(date.getPreviousNDays(n).showDate());
        } else if (choice == 3) {    //test getDaysofDates method
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());
 
            int anotherYear = Integer.parseInt(input.next());
            int anotherMonth = Integer.parseInt(input.next());
            int anotherDay = Integer.parseInt(input.next());
 
            DateUtil fromDate = new DateUtil(year, month, day);
            DateUtil toDate = new DateUtil(anotherYear, anotherMonth, anotherDay);
 
            if (fromDate.checkInputValidity() && toDate.checkInputValidity()) {
                System.out.println("The days between " + fromDate.showDate() + 
                        " and " + toDate.showDate() + " are:"
                        + fromDate.getDaysofDates(toDate));
            } else {
                System.out.println("Wrong Format");
                System.exit(0);
            }
        }
        else{
            System.out.println("Wrong Format");
            System.exit(0);
        }        
    }
}

class DateUtil{
    private int year;
    private int month;
    private int day;
    int a[]=new int[17];
    DateUtil(DateUtil d){//构造方法(用来后面比较)
        this.day=d.getDay();
        this.month=d.getMonth();
        this.year=d.getYear();
        a[1]=31;a[2]=28;a[3]=31;a[4]=30;a[5]=31;a[6]=30;
        a[7]=31;a[8]=31;a[9]=30;a[10]=31;a[11]=30;a[12]=31;
    }//完成
    DateUtil(int year,int month,int day){//构造方法
        this.year=year;
        this.month=month;
        this.day=day;
        a[1]=31;a[2]=28;a[3]=31;a[4]=30;a[5]=31;a[6]=30;
        a[7]=31;a[8]=31;a[9]=30;a[10]=31;a[11]=30;a[12]=31;
    }
    public void setDay(int day){
        this.day=day;
    }
    public int getDay(){
        return this.day;
    }
    public void setMonth(int month){
        this.month=month;
    }
    public int getMonth(){
        return this.month;
    }
    public void setYear(int year){
        this.year=year;
    }
    public int getYear(){
        return this.year;
    }
    public boolean checkInputValidity(){//检测合不合理
        if(this.year<1820||this.year>2020)
            return false;
        if(this.month<1||this.month>12)
            return false;
        if(this.isLeapYear(this.year)==true){
            if(this.month==2){
                if(this.day<1||this.day>29)
                    return false;
            }
            else{
                if(this.day<1||day>a[this.month])
                    return false;
            }
        }
        else{
            if(this.day<1||this.day>a[this.month])
                return false;
        }
           return true;
    }
    public boolean isLeapYear(int year){//判断是不是闰年
        if(year%400==0||year%4==0&&year%100!=0)
            return true;
        return false;
    }
    public DateUtil getNextNDays(int n){//下n天日期
        while(n>365){
            if(this.isLeapYear(this.year)&&this.month<=2){
                if(this.month==2&&this.day==29){
                    this.day=1;
                    this.month=3;
                }
                this.year++;
                n=n-366;
            }
            else if(this.isLeapYear(this.year+1)&&this.month>2){
                this.year++;
                n=n-366;
            }
            else{
                this.year++;
                n=n-365;
            }
        }
        for(int i=0;i<n;i++){
            this.day++;
            if(this.isLeapYear(this.year)&&this.month==2){
                if(this.day>29){
                    this.month++;
                    this.day=1;
                }
            }
            else if(this.day>a[this.month]){
                this.month++;
                this.day=1;
                if(this.month>12){
                    this.month=1;
                    this.year++;
                }
            }
        }
        return this;
    }
    public DateUtil getPreviousNDays(int n){//前n天
        while(n>365){
            if(this.isLeapYear(this.year)&&this.month>2){
                n=n-366;
                this.year=this.year-1;
            }
            else if(this.isLeapYear(this.year-1)&&this.month<=2){
                n=n-366;
                this.year--;
            }
            else{
                n=n-365;
                this.year--;
            }
        }
        for(int i=0;i<n;i++){
            this.day--;
            if(this.day<=0){
                this.month--;
                if(this.month<=0){
                    this.month=12;
                    this.year--;
                }
                if(this.isLeapYear(this.year)&&this.month==2){
                    this.day=29;
                }
                else{
                    this.day=a[this.month];
                }
            }
        }
        return this;
    }
    public boolean compareDates(DateUtil date){//比较大小
        if(this.year>date.getYear())
            return true;
        else if(this.year==date.getYear()&&this.month>date.getMonth())
            return true;
        else if(this.year==date.getYear()&&this.month==date.getMonth()&&this.day>date.getDay())
            return true;
        return false;
    }
    public boolean equalTwoDates(DateUtil date){
        if(this.year==date.getYear()&&this.month==date.getMonth()&&this.day==date.getDay())
            return true;
        return false;
    }
    public int getDaysofDates(DateUtil date){//相差几天
        int res=0;
        boolean b=this.compareDates(date);
        if(b){//this比date大,所以this减,一直减到跟date一样
            while(this.year-date.getYear()>=2){
                if(this.isLeapYear(this.year)&&this.month>2){
                    res=res+366;
                }
                else if(this.isLeapYear(this.year-1)&&this.month<=2){
                    res=res+366;
                }
                else
                    res=res+365;
                this.year--;
            }
            while(true){
                if(this.equalTwoDates(date))
                    break;
                res++;
                this.day--;
                if(this.day==0){
                    this.month--;
                    if(this.month==0){
                        this.month=12;
                        this.year--;
                    }
                    if(this.isLeapYear(this.year)&&this.month==2)
                        this.day=29;
                    else
                        this.day=a[this.month];
                }
            }
        }
        else{//这个时候加就完事儿了,方法跟上面差不多
            while(date.getYear()-this.year>=2){
                if(this.isLeapYear(this.year)&&this.month<=2)
                    res=res+366;
                else if(this.isLeapYear(this.year+1)&&this.month>2){
                    res=res+366;
                }
                else 
                    res=res+365;
                this.year++;
            }
            while(true){
                if(this.equalTwoDates(date))
                    break;
                res++;
                this.day++;
                if(this.isLeapYear(this.year)&&this.month==2){
                    if(this.day>29){
                        this.month++;
                        this.day=1;
                    }
                }
                else if(this.day>a[this.month]){
                    this.month++;
                    this.day=1;
                    if(this.month>12){
                        this.month=1;
                        this.year++;
                    }
                }
            }
        }
        return res;
    }
    public String showDate(){
        return this.year+"-"+this.month+"-"+this.day;
    }
}

 

7-8 jmu-Java-03面向对象基础-03-形状

1. 定义长方形类与圆形类Circle

长方形类-类名:Rectangleprivate属性:int width,length
圆形类-类名:Circleprivate属性:int radius

编写构造函数:
带参构造函数:Rectangle(width, length),Circle(radius)

编写方法:
public int getPerimeter(),求周长。
public int getArea(),求面积。
toString方法,使用Eclipse自动生成。

注意:

  1. 计算圆形的面积与周长,使用Math.PI
  2. 求周长和面积时,应先计算出其值(带小数位),然后强制转换为int再返回。

2. main方法

  • 输入2行长与宽,创建两个Rectangle对象放入相应的数组。
  • 输入2行半径,创建两个Circle对象放入相应的数组。
  • 输出1:上面2个数组中的所有对象的周长加总。
  • 输出2:上面2个数组中的所有对象的面积加总。
  • 最后需使用Arrays.deepToString分别输出上面建立的Rectangle数组与Circle数组

思考:如果初次做该题会发现代码冗余严重。使用继承、多态思想可以大幅简化上述代码。

输入样例:

1 2
3 4
7
1

输出样例:

69
170
[Rectangle [width=1, length=2], Rectangle [width=3, length=4]]
[Circle [radius=7], Circle [radius=1]]

 

 

import java.util.*;
import java.lang.Math;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int a1=in.nextInt();
        int b1=in.nextInt();
        int a2=in.nextInt();
        int b2=in.nextInt();
        int r1=in.nextInt();
        int r2=in.nextInt();
        Rectangle rec1=new Rectangle(a1,b1);
        Rectangle rec2=new Rectangle(a2,b2);
        Circle c1=new Circle(r1);
        Circle c2=new Circle(r2);
        int Perimeter=rec1.getPerimeter()+rec2.getPerimeter()+c1.getPerimeter()+c2.getPerimeter();
        int Area=rec1.getArea()+rec2.getArea()+c1.getArea()+c2.getArea();
        System.out.println(Perimeter);
        System.out.println(Area);
        System.out.println("["+rec1.toString()+", "+rec2.toString()+"]");
        System.out.println("["+c1.toString()+", "+c2.toString()+"]");
    }
}
class Rectangle{
    private int width;
    private int length;
    Rectangle(int width,int length){
        this.width=width;
        this.length=length;
    }
    
    public int getPerimeter(){
        return 2*(this.width+this.length);
    }
    public int getArea(){
        return this.width*this.length;
    }

    public String toString(){
        return "Rectangle [width="+this.width+", length="+this.length+"]";
    }
}
class Circle{
    private int radius;
    Circle(int radius){
        this.radius=radius;
    }

    public int getPerimeter(){
        return (int)(2*this.radius*Math.PI);
    }
    public int getArea(){
        return (int)(this.radius*this.radius*Math.PI);
    }

    public String toString(){
        return "Circle [radius="+this.radius+"]";
    }
}

7-9 jmu-Java-02基本语法-01-综合小测验

运行程序后可以输入4个选项,分别为:fib,sort,search,getBirthDate

fib:根据输入n,打印斐波那契数列。比如输入:3,输出:1 1 2

sort:输入一串数字,然后进行排序并输出,注意数组元素输出的格式为使用[ ]包括。提示:可直接使用函数Arrays相关方法处理输出。

search:如果找到返回所找到的位置,如果没找到,返回-1。提示: 可以先对数组排序,然后使用Arrays相关函数进行查找。

getBirthDate:输入n个身份证,然后把输入的n个身份号的年月日抽取出来,按年-月-日格式输出。

当输入不是这几个字符串(fib,sort,search,getBirthDate)的时候,显示exit并退出程序。

注意: 在处理输入的时候,尽量只使用Scanner的nextLine()方法接收输入,不要将nextLine()与其它next方法混用,否则可能会出现行尾回车换行未处理影响下次输入的情况。

参考:jdk文档的Arrays,String

输入格式:

fib
3
sort
-1 10 3 2 5
search
-1
search
0
getBirthDate
1
330226196605054190
e

输出格式:

1 1 2
[-1, 2, 3, 5, 10]
0
-1
1966-05-05
exit

代码长度限制

 

import java.util.*;
import java.lang.Math;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int a[]=new int[1];
        while(true){
            String str=in.nextLine();
            if(str.equals("fib")){
                int  n=Integer.valueOf(in.nextLine());
                int aa=1;
                int b=1;
                if (n==1){
                    System.out.println("1");
                }else if (n==2){
                    System.out.println("1 1");
                }else if (n==0){
                }else {
                    System.out.print("1 1 ");
                    int tem;
                    for (int i=2;i<n-1;i++){
                        tem=aa+b;
                        System.out.print(tem+" ");
                        aa=b;
                        b=tem;
                    }
                    System.out.println(aa+b);
                }
                
            }
            else if (str.equals("sort")){
                String s[]=in.nextLine().split(" ");
                a=new int[s.length];
                for (int i=0;i<s.length;i++){
                    a[i]=Integer.valueOf(s[i]);
                }
                Arrays.sort(a);
                System.out.println(Arrays.toString(a));
            }
            else if (str.equals("search")){
                int  b=Integer.valueOf(in.nextLine());
                int flag=0;
                for (int i =0;i<a.length;i++){
                    if (a[i]==b){
                        flag=1;
                        System.out.println(i);
                        break;
                    }
                }
                if (flag==0){
                    System.out.println(-1);
                }
            }
            else if (str.equals("getBirthDate")){
                int n=Integer.valueOf(in.nextLine());
                for (int i=0;i<n;i++){
                    String bir=in.nextLine();
                    String bem=bir.substring(6,14);
                    System.out.println(bir.substring(6,10)+"-"+bir.substring(10,12)+"-"+bir.substring(12,14));
            
                }
            } 
            else{
                System.out.println("exit");
                System.exit(0);
            }
        }
    }
}

7-10 jmu-Java-02基本语法-04-动态数组

根据输入的n,打印n行乘法口诀表。
需要使用二维字符串数组存储乘法口诀表的每一项,比如存放1*1=1.
为了保证程序中使用了二维数组,需在打印完乘法口诀表后使用Arrays.deepToString打印二维数组中的内容。

提醒:格式化输出可使用String.format或者System.out.printf

输出格式说明

  1. 每行末尾无空格。
  2. 每一项表达式之间(从第1个表达式的第1个字符算起到下一个表达式的首字符之间),共有包含7个字符。如2*1=2 2*2=4从第1个2开始到第二项``2*2=4`首字母之间,总共有7个字符(包含空格,此例中包含2个空格)。

输入样例:

2
5

输出样例:

1*1=1
2*1=2  2*2=4
[[1*1=1], [2*1=2, 2*2=4]]
1*1=1
2*1=2  2*2=4
3*1=3  3*2=6  3*3=9
4*1=4  4*2=8  4*3=12 4*4=16
5*1=5  5*2=10 5*3=15 5*4=20 5*5=25
[[1*1=1], [2*1=2, 2*2=4], [3*1=3, 3*2=6, 3*3=9], [4*1=4, 4*2=8, 4*3=12, 4*

 

import java.util.*;
import java.lang.Math;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        while(true){
            int n=in.nextInt();
            String[][] str=new String[n][n];
            for(int i=0;i<n;i++){
                for(int j=0;j<=i;j++){
                    String str2 = (i + 1) + "*" + (j + 1) + "=" + (i + 1) * (j + 1);
                    System.out.print(str2);
                    str[i][j] = str2;
                    if (j < i){
                        int len=str2.length();
                        if(len==5) {
                            System.out.print("  ");
                        }
                        else if(len==6){
                            System.out.print(" ");
                        }
                    }
                }
                System.out.println();
            }
            System.out.println(Arrays.deepToString(str).replace(", null",""));
        }
    }
}

7-11 jmu-Java-02基本语法-07-大整数相加

有若干大整数,需要对其进行求和操作。

输入格式

每行输入一个字符串代表一个大整数,连续输入若干行,当某行字符为eE时退出。

输入样例:

42846280183517070527831839425882145521227251250327
55121603546981200581762165212827652751691296897789
e

输出样例:

97967883730498271109594004638709798272918548148116
import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        BigInteger a=new BigInteger("0");
        while(true){
            String str=in.next();
            if(str.equals("e")||str.equals("E"))
                break;
            a=a.add(new BigInteger(str));
        }
        System.out.println(a);
    }
}

7-12 jmu-Java-03面向对象基础-05-覆盖

Java每个对象都继承自Object,都有equals、toString等方法。
现在需要定义PersonOverride类并覆盖其toStringequals方法。

1. 新建PersonOverride

a. 属性String nameint ageboolean gender,所有的变量必须为私有(private)。

b. 有参构造方法,参数为name, age, gender

c. 无参构造方法,使用this(name, age,gender)调用有参构造方法。参数值分别为"default",1,true

d.toString()方法返回格式为:name-age-gender

e. equals方法需比较name、age、gender,这三者内容都相同,才返回true.

2. main方法

2.1 输入n1,使用无参构造方法创建n1个对象,放入数组persons1。
2.2 输入n2,然后指定name age gender。每创建一个对象都使用equals方法比较该对象是否已经在数组中存在,如果不存在,才将该对象放入数组persons2。
2.3 输出persons1数组中的所有对象
2.4 输出persons2数组中的所有对象
2.5 输出persons2中实际包含的对象的数量
2.5 使用System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));输出PersonOverride的所有构造方法。

提示:使用ArrayList代替数组大幅复简化代码,请尝试重构你的代码。

输入样例:

1
3
zhang 10 true
zhang 10 true
zhang 10 false

输出样例:

default-1-true
zhang-10-true
zhang-10-false
2
[public PersonOverride(), public PersonOverride(java.lang.String,int,boolean)]
import java.util.*;
import java.lang.Math;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int n1=in.nextInt();
        int n2=in.nextInt();
        ArrayList<PersonOverride> person1=new ArrayList<PersonOverride>();
        ArrayList<PersonOverride> person2=new ArrayList<PersonOverride>();
        for(int i=0;i<n1;i++){
            person1.add(new PersonOverride());
        }
        int size=0;
        for(int i=0;i<n2;i++){
            PersonOverride tmp=new PersonOverride(in.next(),in.nextInt(),in.nextBoolean());
            boolean flag=false;
            for(int ii=0;ii<size;ii++){
                if(tmp.equals(person2.get(ii))){
                    flag=true;
                    break;
                }
            }
            if(!flag){
                person2.add(tmp);
                size++;
            }
        }
        for(int i=0;i<n1;i++){
            System.out.println(person1.get(i).toString());
        }
        for(int i=0;i<person2.size();i++){
            System.out.println(person2.get(i).toString());
        }
            System.out.println(person2.size());
            System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));
        
    }
}


class PersonOverride{
    private String name;
    private boolean gender;
    private int age;

    public PersonOverride(){
        this("default",1,true);
        //System.out.println("Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]");
    }
    public PersonOverride(String name,int age,boolean gender){
        this.name=name;
        this.age=age;
        this.gender=gender;
    }
    public void setterName(String name){
        this.name=name;
    }
    public void setterAge(int age){
        this.age=age;
    }
    public void setterGender(boolean gender){
        this.gender=gender;
    }
   
    public String toString(){
        return name+"-"+age+"-"+gender;
    }
    public boolean equals(PersonOverride a){
        if(a.gender==this.gender&&a.age==this.age&&(a.name).equals(this.name))
            return true;
        else return false;
        
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值