目录
一:超市贴花
某超市有一种促销手段,购买金额超过一定阈值就随机给一个贴花。贴花有不同种类的,种类以编号表示,编号是一个1到100之间的数字。当收集到连续编号的三张贴花时,就可以换一个小礼物。
输入样例:
6
3 2 4 6 6 4
输出样例:
1
2 3 4是一个组合,之后剩下的4 6 6不是连续的编号
答案代码:
package com.lcyy;
import java.util.Arrays;
import java.util.Scanner;
/**
* @author: dlwlrma
* @data 2024年06月04日 22:17
* @Description: TODO:某超市有一种促销手段,购买金额超过一定阈值就随机给一个贴花。贴花有不同种类的,
* 种类以编号表示,编号是一个1到100之间的数字。当收集到连续编号的三张贴花时,就可以换一个小礼物。
*/
public class Main7 {
public static void main(String[] args) {
//用来计数
int temp = 0;
Scanner sc = new Scanner(System.in);
//输入第一个值
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < a.length; i++) {
//存放要放入的数据,此时元素时无序的,可以进行排序
a[i] = sc.nextInt();
}
//排序
Arrays.sort(a);
for (int i = 0; i < a.length-2;) {
if((a[i]!=0)&&(a[i]+1==a[i+1])&&(a[i+1]==a[i+2])){
temp++;
//连续三次所以要+3
i+=3;
}else {
//不是三次,向后移一位
i++;
}
}
//输出temp即可
System.out.println(temp);
}
}
二:教师类
设计一个教师类Teacher,要求:
属性有编号(int no)、姓名(String name)、年龄(int age)、所属学院(String seminary),为这些属性设置相应的get和set方法。
为Teacher类重写equals方法,要求:当两个教师对象的no相同时返回true。
重写Teacher类的toString方法,通过该方法可以返回“no: , name:, age: **, seminary: **”形式的字符串
输入样例:
1 Linda 38 SoftwareEngineering
2 Mindy 27 ComputerScience
输出样例:
no: 1, name:Linda, age: 38, seminary: SoftwareEngineering
no: 2, name:Mindy, age: 27, seminary: ComputerScience
false
答案测试代码:
import java.util.Objects;
import java.util.Scanner;
//设计一个教师类Teacher,要求:
//属性有编号(int no)、姓名(String name)、年龄(int age)、所属学院(String seminary),为这些属性设置相应的get和set方法。
//为Teacher类重写equals方法,要求:当两个教师对象的no相同时返回true。
//重写Teacher类的toString方法,通过该方法可以返回“no: , name:, age: **, seminary: **”形式的字符串。
class Teacher{
private int no;
private String name;
private int age;
private String seminarry;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Teacher teacher = (Teacher) o;
return no == teacher.no;
}
@Override
public int hashCode() {
return Objects.hash(no);
}
@Override
public String toString() {
return ("no: "+no+", name:"+name+", age: "+age+", seminary: "+seminarry);
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSeminarry() {
return seminarry;
}
public void setSeminarry(String seminarry) {
this.seminarry = seminarry;
}
class Main{
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
Teacher teacher = new Teacher();
teacher.setNo(sc.nextInt());
teacher.setName(sc.next());
teacher.setAge(sc.nextInt());
teacher.setSeminarry(sc.next());
Teacher teacher1 = new Teacher();
teacher1.setNo(sc.nextInt());
teacher1.setName(sc.next());
teacher1.setAge(sc.nextInt());
teacher1.setSeminarry(sc.next());
System.out.println(teacher.toString());
System.out.println(teacher1.toString());
System.out.println(teacher.equals(teacher1));
}
}
三:快递计价器
现需要编写一个简易快递计价程序。具体来说:
1、抽象快递类Express,其包含一个属性int weight表示快递重量(单位为kg),一个方法getWeight()用于返回快递重量和一个抽象方法getTotal()用于计算快递运费。
2、两个类继承Express,分别是:
(a)顺路快递SLExpress:计价规则为首重(1kg)12元,每增加1kg费用加2元。
(b)地地快递DDExpress:计价规则为首重(1kg)5元,每增加1kg费用加1元。
3、Main:
接收用户通过控制台输入的N行信息,自动计算所有快递的运费总和。
输入样例:
6
SL 2
DD 2
SL 1
SL 1
SL 1
DD 3第1行n表示需要计算的快递件数
第2至n+1表示每个快递信息,即选哪家快递公司 以及快递的重量(单位kg)
输出样例:
63
答案代码:
package com.lcyy;
import java.util.Scanner;
/**
* @author: dlwlrma
* @data 2024年06月04日 22:33
* @Description: TODO:现需要编写一个简易快递计价程序。具体来说:
* 1、抽象快递类Express,其包含一个属性int weight表示快递重量(单位为kg),一个方法getWeight()用于返回快递重量
* 一个抽象方法getTotal()用于计算快递运费。
* 2、两个类继承Express,分别是:
* (a)顺路快递SLExpress:计价规则为首重(1kg)12元,每增加1kg费用加2元。
* (b)地地快递DDExpress:计价规则为首重(1kg)5元,每增加1kg费用加1元。
*/
//抽象快递类
abstract class Express{
//快递重量
int weight;
//返回快递重量
public int getWeight(){
return weight;
}
//抽象方法(计算快递费)
abstract int getTotal(int weight);
}
class SLExpress extends Express{
@Override
int getTotal(int weight) {
int money = 12+(weight-1)*2;
return money;
}
}
class DDExpress extends Express{
@Override
int getTotal(int weight) {
int money = 5+(weight-1)*1;
return money;
}
}
public class Main8 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//接受用户输入的物品数
int n = sc.nextInt();
String str1 = "SL";
String str2 = "DD";
//总钱数
int sum =0;
for (int i = 0; i <n; i++) {
//创建两个用户
SLExpress slExpress = new SLExpress();
DDExpress ddExpress = new DDExpress();
String str = sc.next();
int a = sc.nextInt();
if(str.equals(str1)){
sum+=slExpress.getTotal(a);
}else if(str.equals(str2)){
sum+=ddExpress.getTotal(a);
}
}
System.out.println();
System.out.println("sum = " + sum);
}
}
四:重复数据问题
在一大堆数据中找出重复的是一件经常要做的事情。现在要处理许多整数,在这些整数中,可能存在重复的数据。
你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“yes”这三个字母;如果没有,则输出“no”。
输入样例:
1 2 3 1 4
输出样例:
yes
答案代码:
import java.util.*;
/**
* @author: dlwlrma
* @data 2024年06月05日 16:27
* @Description: TODO:解决数据冲突问题
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//创建set对象
HashSet<Integer> hashSet = new HashSet<>();
//创建一个布尔类型的标记
boolean temp = false;
while(sc.hasNext()){
int n = sc.nextInt();
if(hashSet.contains(n)){
temp = true;
break;
}else {
hashSet.add(n);
}
}
if(temp){
System.out.println("yes");
}else {
System.out.println("no");
}
}
}
五:List的使用
本题练习列表的使用。
定义Person类
定义私有属性String name,int age,使用Eclipse生成每个属性setter 、getter,有参Person(String name,int age) 、无参 构造方法,toString方法。
定义Main类,在main方法中
定义List list = new ArrayList();
用键盘给变量n赋值
生成n个Person对象并添加到列表中,该Person的name和age通过键盘给出
循环列表,输出列表所有Person对象信息(调用toString方法)
输入一个字符串表示姓名,判断该字符串表示的Person对象在List中是否存在,如果存在,输出该Person,否则输出此人不存在。
输入样例:
3
zhang 23
li 44
wang 33
li------------------
3
zhang 23
li 44
wang 33
may
输出样例:
Person [name=zhang, age=23]
Person [name=li, age=44]
Person [name=wang, age=33]
Person [name=li, age=44]----------------------------------------
Person [name=zhang, age=23]
Person [name=li, age=44]
Person [name=wang, age=33]
此人不存在
答案代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author: dlwlrma
* @data 2024年06月05日 17:11
* @Description: TODO:定义私有属性String name,int age
* 使用Eclipse生成每个属性setter 、getter,有参Person(String name,int age) 、无参 构造方法,toString方法。
*/
class Persion {
private String name;
private int age;
public Persion(){}
public Persion(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [" +
"name=" + name +
", age=" + age +
']';
}
}
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Persion> list = new ArrayList<>();
//输入人数
int number = sc.nextInt();
for (int i = 0; i < number; i++) {
Persion persion = new Persion();
persion.setName(sc.next());
persion.setAge(sc.nextInt());
list.add(persion);
}
System.out.println();
//遍历集合
for (Persion ps : list) {
//输出集合
System.out.println(ps);
}
//查询
boolean temp = false;
String str = sc.next();
for(Persion ps : list){
if(ps.getName().equals(str)){
System.out.println(ps);
temp = true;
break;
}
}
if(!temp){
System.out.println("此人不存在");
}
}
}
标签:name,--,age,PTA,面向对象,int,sc,public,String
From: https://blog.csdn.net/2301_76613040/article/details/139455368