R7-1 学生类-构造函数
定义一个有关学生的Student类,内含类成员变量:
String name、String sex、int age,所有的变量必须为私有(private)。
1.编写有参构造函数:
能对name,sex,age赋值。
2.覆盖toString函数:
按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式
3.对每个属性生成setter/getter方法
4.main方法中
•输入1行name age sex , 调用上面的有参构造函数新建对象。
输入样例:
tom 15 male
输出样例:
Student [name='tom', sex='male', age=15]
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); Student stu = new Student(cin.next(), cin.nextInt(), cin.next()); System.out.println(stu.toString()); } } class Student { String name; String sex; int age; // tom 15 male public Student(String name, int age, String sex) { this.name = name; this.sex = sex; this.age = age; } @Override public String toString() { return "Student" + " [name=\'" + name + "\', sex=\'" + sex + "\', age=" + age + ']'; } }
R7-2 Ring类设计
编写一个圆环类Ring的Java程序。
a定义圆环类的2个数据成员,分别是内半径innerRadius,外半径outerRadius,这些属性通过get和set方法进行封装。
b 定义圆环类有参构造方法Ring(int innerRadius,int outerRadius),在有参构造方法中加入System.out.println("constructor");
c完成无参构造方法Ring(),要求在无参构造方法中使用this调用有参构造方法给两个半径赋值(外半径赋值3,内半径赋值1)
d 圆环类中定义 public int getArea()方法可以返回其面积。面积求出后强制转换为整型值返回,π使用Math.PI表示。
在Main类中先生成一个圆环类对象,这个圆环的两个半径通过键盘读入,调用求面积方法求出面积后,输出面积。
然后再次定义一个圆环对象,调用无参构造方法,调用求面积方法求出面积后,输出面积。
输入格式:
输入在一行中先给出内半径,再给出外半径。
输出格式:
在一行中输出圆环的面积。
输入样例:
在这里给出一组输入。先是内半径,然后是外半径,例如:
1 2
输出样例:
在这里给出相应的输出。例如:
constructor 9 constructor 25
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int in = cin.nextInt(); int out = cin.nextInt(); Ring r1 = new Ring(in, out); System.out.println(r1.getArea()); Ring r2 = new Ring(); System.out.println(r2.getArea()); } } class Ring { int innerRadius; int outerRadius; public int setouterRadius() { return outerRadius; } public void getouterRadius(int outerRadius) { this.outerRadius = outerRadius; } public int setinnerRadius() { return innerRadius; } public void getinnerRadius(int innerRadius) { this.innerRadius = innerRadius; } public Ring() { this(1, 3); } public Ring(int innerRadius,int outerRadius) { this.innerRadius = innerRadius; this.outerRadius = outerRadius; System.out.println("constructor"); } public int getArea() { return (int)(Math.PI * (this.outerRadius * this.outerRadius - this.innerRadius * this.innerRadius)); } }
R7-3 圆柱体类设计
- 定义一个圆柱类Cylinder
- 里面包含私有属性 private int radius(半径),height(高)
- 为属性完成其setter getter方法
- 完成带参构造方法Cylinder(int radius,height),该方法中包含一句System.out.println("Constructor with para");
- 完成无参构造方法Cylinder(),在无参构造方法中调用有参构造方法,为半径和高赋值为2,1,该方法包含一句System.out.println("Constructor no para");
- 完成求体积方法 public int getVolumn(){} 求圆柱体积,π使用Math.PI
- 定义测试类Main,在main方法中,按照顺序要求完成下列操作
- 从键盘接收两个数,第一个为半径,第二个为高,并利用刚才输出两个数创建圆柱体对象c1,求c1的体积并输出。
- 使用无参构造方法 创建第二个圆柱体对象c2,求c2的体积并输出。
输入格式:
在一行中输入半径 和高。
输出格式:
对每一个圆柱体输出它的体积
输入样例:
在这里给出一组输入。例如:
2 3
输出样例:
在这里给出相应的输出。例如:
Constructor with para 37 Constructor with para Constructor no para 12
import java.util.*; public class Main { public static void main(String[] rags) { Scanner cin = new Scanner(System.in); int r1 = cin.nextInt(); int h1 = cin.nextInt(); Cylinder c1 = new Cylinder(r1, h1); System.out.println(c1.getVolumn()); Cylinder c2 = new Cylinder(); System.out.println(c2.getVolumn()); } } class Cylinder { private int radius; private int height; public void setradius(int radius) { this.radius = radius; } public int getradius() { return radius; } public void setheight(int height) { this.height = height; } public int getheight() { return height; } public Cylinder(int radius, int height) { this.radius = radius; this.height = height; System.out.println("Constructor with para"); } public Cylinder() { this(2, 1); System.out.println("Constructor no para"); } public int getVolumn(){ return (int)(Math.PI * radius * radius * height); } }
R7-4 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数
输入格式:
通过键盘输入一行字符(任意字符)
输出格式:
统计一行字符串中的中英文字母个数、空格个数、数字个数、其他字符个数
输入样例:
rwrwewre2345asdJSJQI%^&(& *&sdf YY( 2342-k'
输出样例:
1. 字母个数:22 2. 数字个数:8 3. 空格个数:5 4. 其他字符个数:10
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String l = cin.nextLine(); String[] s = l.split(""); char[] c = new char[123]; c = l.toCharArray(); int a = 0; int b = 0; int x = 0; int d = 0; for (int i = 0; i < c.length; i++) { if (c[i] >= 'a' && c[i] <= 'z' || c[i] >= 'A' && c[i] <= 'Z') { a++; } else if (c[i] >= '0' && c[i] <= '9') { b++; } else if (c[i] == ' ') { x++; } else { d++; } // System.out.println(s[i]); } System.out.println("字母个数:" + a + "\n" + "数字个数:" + b + "\n" +"空格个数:" + x + "\n" +"其他字符个数:" + d); } }
R7-5 数组元素交换
数组元素交换,要求:(1)最大的元素与第一个元素交换(2)最小的元素与最后一个元素交换。
输入格式:
输入一行字符串(由不同的整数组成,以空格分开)
输出格式:
首先以数组形式输出初始字符串(一行一个数字),然后以数组形式输出完成交换后的字符串(一行一个数字)。
输入样例:
2 9 0 10
输出样例:
2 9 0 10 10 9 2 0
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String l = cin.nextLine(); String[] str = l.split(" "); int minn = 0x3f3f3f3f; int maxn = -0x3f3f3f3f; int[] a = new int[123]; // System.out.println(str.length); for (int i = 0 ; i < str.length; i++) { System.out.println(str[i]); } for (int i = 0; i < str.length; i++) { a[i] = Integer.parseInt(str[i]); } int idx1 = 0; int idx2 = 0; for (int i = 0; i < a.length; i++) { if (maxn < a[i]) { maxn = a[i]; idx1 = i; } } for (int i = 0; i < a.length; i++) { if (minn > a[i]) { minn = a[i]; idx2 = i; } } int t = a[0]; a[0] = a[idx1]; a[idx1] = t; t = a[str.length - 1]; a[str.length - 1] = a[idx2]; a[idx2] = t; for (int i = 0; i < str.length; i++) { System.out.println(a[i]); } } }
R7-6 sdust-Java-学生成绩读取与排序
1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以“exit”结束。每行文本的格式为:学号,姓名,课程名,成绩。程序能够读取学生及其成绩,将具有相同学号的学生及其成绩读取到一个Student(学生类)类对象的列表(List)stuList中;
2)程序在读取完学生及其成绩的数据后,能够将stuList中的学生按照平均成绩降序排列(如果平均成绩相同,学号数字小的排在前面), 并输出排序后的学生学号、姓名和成绩。
输入格式:
多行表示的学生成绩,每一行是一个学生的姓名、学号、课程名、成绩(整数)。不同行可以是同一名学生(学号相同的为同一名学生)不同课程的成绩。
输出格式:
按照学生平均成绩降序排序(平均成绩相同的学号小的在前面)的学生排名(具体输出格式参照样例)。
输入样例:
小明,2001,Java,88 小刚,2002,Java,78 小丁,2003,Java,56 小宏,2004,Java,85 小明,2001,Python,84 小刚,2002,Python,98 小丁,2003,JavaWeb,66 小宏,2004,Algorithm,87 exit
输出样例:
1. No1:2002,小刚 2. No2:2001,小明 3. No3:2004,小宏 4. No4:2003,小丁
R7-7 统计商品总价
消费者购买超市5件商品,输入商品名和价格,输出购买的商品信息,并输出应付的总价。
要求:定义Goods类及其成员变量和方法。 (1)定义Goods类:成员变量有 name, price (2)定义Goods类的带两个参数的构造方法。 (3)定义Goods类的toString()方法,getPrice()方法。
输入格式:
输入5行数据,每行一个商品信息,包括商品名和价格,以一个空格分隔。
输出格式:
1. 输出商品信息,格式:商品名,价格 2. 最后输出总价,格式:should pay:总价
裁判程序如下:
class Main{ public static void main(String args[]){ Goods ga[] =new Goods[5]; Scanner sc = new Scanner(System.in); for(int i =0;i<5;i++){ ga[i]= new Goods(sc.next(),sc.nextDouble()); } double shouldPay = 0; for(Goods g:ga){ shouldPay += g.getPrice(); System.out.println(g.toString()); } System.out.println("should pay:"+shouldPay); } }
输入样例:
1. book 5.5 2. pencil 1.2 3. pen 8.0 4. ruler 2.5 5. eraser 1.0
输出样例:
1. book,5.5 2. pencil,1.2 3. pen,8.0 4. ruler,2.5 5. eraser,1.0 6. should pay:18.2
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); double sum = 0; while (cin.hasNext()) { String x = cin.next(); double p = cin.nextDouble(); System.out.println(x + "," + p); sum += p; } System.out.println("should pay:" + sum); } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); List<Student> stu= new ArrayList<>(); int cnt = 0; int flag = 0; while(cin.hasNext()) { String l = cin.nextLine(); if (l.equals("exit")) break; String[] s = l.split(","); for (int i = 0; i < stu.size(); i++) { if (stu.get(i).id.compareTo(s[1]) == 0) { stu.get(i).getSum(Integer.parseInt(s[3])); flag = 1; break; } } if (flag == 0) { // System.out.println(s[0] + " " + s[1] + " " + s[2] + " " + s[3]); Student s1 = new Student(s[0], s[1], s[2], Integer.parseInt(s[3])); stu.add(s1); } } for (int i = 0; i < stu.size(); i++) { stu.get(i).getScore(); } Collections.sort(stu); for (int i = 0; i < stu.size(); i++) { System.out.println("No" + (i + 1) + ":" + stu.get(i).id + "," + stu.get(i).name); } } } class Student implements Comparable<Student>{ String name; String id; String cousrce; int grade; int sum = 0; static int num = 0; public Student(String name, String id, String cousrce, int grade) { this.name = name; this.id = id; this.cousrce = cousrce; this.grade = grade; } public void getSum (int grade) { num++; this.grade += grade; } public double getScore () { return grade / num; } public int compareTo(Student o) { if(this.getScore()==o.getScore()) return id.compareTo(o.id); else return (int)(o.getScore() - getScore()); } }
R7-8 定义商品类,封装成员变量,输出对象
定义一个商品类。创建对象并按指定格式输出它。
商品类要求:
(1)成员变量:商品编号(String) 、商品名称(String)、商品单价(double) (2)成员变量封装,定义为私有属性,并为每个成员变量定义getXXXX,setXXXX方法 (3)定义构造方法,要求带三个参数,参数值用于给成员变量赋值。 (4)重写toString()方法,将对象转换为字符串,格式:商品编号,商品名称,商品单价
测试类要求:
1. 按指定的格式 输入商品信息,调用构造方法生成对象,并输出它。 2. 例:输入:WJ002 记事本 5.5 3. 输出:WJ002,记事本,5.5
输入商品的信息,每个属性值之间用1个空格分隔。
输出 格式,商品的每个属性值之间用逗号分隔。
输入样例:
WJ002 记事本 5.5
输出样例:
WJ002,记事本,5.5
import java.util.*; class Shangping { String num; String name; double price; public String getNum() { return num; } public double getPrice() { return price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setNum(String num) { this.num = num; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return num + ',' + name + ',' + price; } public Shangping(String num, String name, double price) { this.num = num; this.name = name; this.price = price; } } class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); String l = cin.nextLine(); String[] s = l.split(" "); Shangping res = new Shangping(s[0], s[1], Double.parseDouble(s[2])); System.out.println(res.toString()); } }
R7-9 正方形类
定义一个正方形类square,在次类中包括写内容:
- 定义成员变量边长private int edge;
- 定义方法:包括构造方法,setter getter方法,求面积方法等,要求如下所示:
- 定义正方形类的构造方法:在构造方法中给edge赋值为2,并添加System.out.println("this is constructor method");
- 为成员变量edge设置set方法,用来接收用户给edge的值,如果用户给的值<=0,则设置edge值为1
- 为成员变量edge设置get方法,用来返回edge的值
- 完成求面积方法,得到正方形的面积:public int getArea()
定义类Main,并在main方法中, 1.首先创建正方形对象s1,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出
2.创建正方形对象s2,并通过键盘输入s2对象的边的值,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出
输入格式:
输入在一行中给出边的值。
输出格式:
输出s1对象的边、输出s1对象的面积
输出s2对象的边、s2对象的面积
输入样例:
在这里给出一组输入。例如:
3
-5
输出样例:
在这里给出相应的输出。例如:
this is constructor method s1:edge=2 s1:area=4 this is constructor method s2:edge=3 s2:area=9
this is constructor method s1:edge=2 s1:area=4 this is constructor method s2:edge=1 s2:area=1
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int e1 = cin.nextInt(); Square s1 = new Square(); System.out.println("s1:edge=" + s1.getEdge()); System.out.println("s1:area=" + s1.getArea()); Square s2 = new Square(e1); System.out.println("s2:edge=" + s2.getEdge()); System.out.println("s2:area=" + s2.getArea()); } } class Square { private int edge; public void setEdge(int edge) { if (edge < 0) { edge = 1; } else this.edge = edge; } public int getEdge() { return edge; } public Square() { edge = 2; System.out.println("this is constructor method"); } public Square(int edge) { super(); this.edge = edge; System.out.println("this is constructor method"); } public int getArea() { return edge * edge; } }
R7-10 Circle类
a 定义圆类Circle,其中包括:
- 成员变量定义 private int radius
- 方法定义 包括下列要求
- 定义无参构造方法 ,给radius赋值为2,并添加语句System.out.println("this is a constructor");
- 定义有参构造方法 ,接收用户给给radius赋值,如果用户输入半径为<=0,则让半径的值为2,并添加语句System.out.println("this is a constructor with para");
- 为radius半径添加setter方法,接收用户输入的半径,如果用户输入半径为<=0,则让半径的值为2
- 为radius半径添加getter方法,返回用户输入的半径
- 定义求面积方法public int gerArea(),π使用Math.PI代替,面积的结果强制转换为int返回
- 定义toString方法,public String toString( )方法体为:
return "Circle [radius=" + radius + "]";
b定义Main类,在main方法中,完成下列操作
- .定义并创建Circle的第一个对象c1,并使用println方法输出c1
- 求c1的面积并输出
- 定义并创建Circle的第一个对象c2,并使用println方法输出c2
- 从键盘接收整数半径,并赋值给c2的半径,使用println方法输出c2
- 求c2的面积并输出
- 从键盘接收整数半径,并创建Circle的第三个对象c3,并将用户输入整数半径通过有参构造方法传递给出c3,使用println方法输出c3
- 求c3的面积并输出
### 输入格式: 从键盘输入一个整数半径
输出格式:
分别输出c1和c2对象的信息
输入样例:
在这里给出一组输入。例如:
1. 4 2. 5
1. -4 2. -2
输出样例:
在这里给出相应的输出。例如:
this is a constructor Circle [radius=2] c1:area=12 this is a constructor Circle [radius=2] Circle [radius=4] c2:area=50 this is a constructor with para Circle [radius=5] c3:area=78
this is a constructor Circle [radius=2] c1:area=12 this is a constructor Circle [radius=2] Circle [radius=2] c2:area=12 this is a constructor with para Circle [radius=2] c3:area=12
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); Circle c1 = new Circle(); System.out.println(c1.toString()); System.out.println("c1:area=" + c1.getArea()); Circle c2 = new Circle(); System.out.println(c2.toString()); c2.setter(cin.nextInt()); System.out.println(c2.toString()); System.out.println("c2:area=" + c2.getArea()); Circle c3 = new Circle(cin.nextInt()); System.out.println(c3.toString()); System.out.println("c3:area=" + c3.getArea()); } } class Circle { private int radius; public Circle() { radius = 2; System.out.println("this is a constructor"); } public Circle(int radius) { // this(); if (radius <= 0) { radius = 2; } else { this.radius = radius; } System.out.println("this is a constructor with para"); } public void setter(int radius) { if (radius <= 0) { radius = 2; } else { this.radius = radius; } } public int getter() { return radius; } public int getArea() { return (int)(Math.PI * radius * radius); } public String toString() { return "Circle [radius=" + radius + "]"; } }
R7-11 定义类与创建对象
定义一个类Person,定义name和age属性,定义有参的构造方法对name和age进行初始化。在测试类中创建该类的2个对象,姓名、年龄分别为lili、19和lucy、20,在屏幕打印出2个对象的姓名和年龄。
输入格式:
本题目无输入
输出格式:
在一行中输出一个人的姓名和年龄
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
this person is lili,her age is 19 this person is lucy,her age is 20
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); Persion p1 = new Persion("lili",19); System.out.println(p1.toString()); Persion p2 = new Persion("lucy",20); System.out.println(p2.toString()); } } class Persion { String name; int age; public Persion(String name, int age) { this.name = name; this.age = age; } public String toString() { return "this person is " + name +",her age is " + age; } }