仅供参考,请勿CTRL+CV提交OJ
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 n=in.nextInt();int m=in.nextInt();int k=in.nextInt();Random r = new Random(k);int x;for(int i=0;i<n;i++){x=r.nextInt(m);if(i==n-1)System.out.println(x);}}
}
7-2jmu-Java-03面向对象基础-01-构造方法与toString
定义一个有关人的Person类,内含属性:
String name、int age、boolean gender、int 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.*;
class Person{private String name;private int age;private boolean gender;private int id;public Person(){System.out.println("This is constructor");System.out.printf("%s,%d,%b,%d\n",name,age,gender,id);}public Person(String nm,int ag,boolean sex){name=nm;age=ag;gender=sex;}public String toString(){return "Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]";}
}
public class Main{public static void main(String args[]){Scanner in=new Scanner(System.in);String s=in.nextLine();int n=Integer.parseInt(s);Person []ps=new Person[n+1];for(int i=0;i<n;i++){s=in.nextLine();String []str=s.split("\\s+");ps[i]=new Person(str[0],Integer.parseInt(str[1]),Boolean.parseBoolean(str[2]));}for(int i=n-1;i>=0;i--){System.out.println(ps[i].toString());}ps[n]=new Person();System.out.println(ps[n].toString());}
}
7-3jmu-Java-03面向对象基础-02-构造方法与初始化块
7-4复数类的定义
编写一个复数类,可以进行复数加法和减法运算。编写一个包含main方法的类测试该复数类。要求该复数类至少包含一个无参的构造方法和一个带参的构造方法;数据成员包括复数的实部和虚部,为double类型;包括两个方法,分别实现复数的加法和减法运算。
输入格式:
输入两个复数。输入为两行,每一行为一个复数的实部和虚部,用空格隔开。
输出格式:
输出复数加法和减法结果。输出为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.*;
class Complex{private double real,image;public Complex(){real=0;image=0;}public Complex(double r,double i){real=r;image=i;}public void setRealPart(double r){real=r;}public void setImaginaryPart(double i){image=i;}public double getReal(){return real;}public double getImage(){return image;}public String toString(){ //注意此处if(real!=0){if(image>0)return real+"+"+image+"i";else if(image==0)return real+"";else return real+""+image+"i";}else{if(image==0)return "0";else return image+"i";}}public Complex add(Complex b){Complex res=new Complex(this.real+b.getReal(),this.image+b.getImage());return res;}public Complex sub(Complex b){Complex res=new Complex(this.real-b.getReal(),this.image-b.getImage());return res;}
}
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)); }
}
7-5jmu-Java-01入门-开根号
使用逐步逼近法对给定数值x求开根号。
逐步逼近法说明:从0开始逐步累加步长值。
步长=0.0001,epsilon(误差)=0.0001
循环继续的条件:
平方值<x 且 |x-平方值| > epsilon
###说明与参考
数值输出保留6位小数,使用System.out.printf(“%.6f\n”)
求平方,参考Math.pow函数。
输入值<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