首页 > 编程语言 >前三次Java题目集总结

前三次Java题目集总结

时间:2023-10-07 21:34:49浏览次数:32  
标签:题目 String int menu return new 三次 Java public

前言

既然老师发布了作业做一次Java题目集总结并发Blog,那我就说说我的感受吧。关于第一次题目集给我的感觉似曾相识。回想这几年学过的编程 语言,我知道了是什么感觉了。是写C语言pta作业的感觉,,,尤其是在我室友用C写出一道题目之后,这种感觉就更强烈了。。。直到第二次第三次习题集发布。我真的没想到原来Java是这样的,原来Java能引用别的类,用来完成自己的代码需求,那是不是说明Java要记的东西特别的,用的东西也会不时的更新,好好好,我总算知道为什么说Java卷了。

  1. 第一次题目集
    7-1 身体质量指数(BMI)测算 10 118/588(20.07%)
      7-2 长度质量计量单位换算 5 126/767(16.43%)
      7-3 NCHU_奇数求和 9 121/329(36.78%)
      7-4 NCHU_房产税费计算 12 121/669(18.09%)
      7-5 游戏角色选择 14 107/276(38.77%)
      7-6 NCHU_学号识别 10 106/562(18.86%)
      7-8 NCHU_巴比伦法求平方根近似值 10 111/522(21.26%)
      7-9 二进制数值提取 10 106/565(18.76%)
      7-7 判断三角形类型 20 117/907(12.90%)
     
  2. 第二次题目集
    7-1 成绩计算-1-类、数组的基本运用 10 117/455(25.71%)
      7-2 成绩计算-2-关联类 10 71/569(12.48%)
      7-3 有重复的数据 10 116/1151(10.08%)
      7-4 去掉重复的数据 10 109/572(19.06%)
      7-5 面向对象编程(封装性) 10 116/245(47.35%)
      7-6 GPS测绘中度分秒转换 10 103/491(20.98%)
      7-7 菜单计价程序-1 30 116/428(27.10%)
      7-8 jmu-java-日期类的基本使用 10 61/1111(5.49%)
     
  3. 第三次题目集
    7-1 jmu-java-日期类的基本使用 10 89/742(11.99%)
      7-2 课程成绩统计程序-1 65 31/955(3.25%)
      7-3 面向对象编程(封装性) 10 118/205(57.56%)
      7-4 判断两个日期的先后,计算间隔天数、周数 15 103/583(17.67%)
     

这三次题目集难度逐步上升,多说无益,看上边的提交和通过率。

设计与分析

第二次题目集 7-1

7-1 成绩计算-1-类、数组的基本运用 分数 10 作者 蔡轲 单位 南昌航空大学

创建学生类,包含

属性:学号(String)、姓名(String)、语文成绩(int)、数学成绩(int)、物理成绩(int)

方法:计算总分、计算平均分

输入5个学生的信息,将每个学生的信息封装在一个学生对象中。

按输入顺序依次输出5个学生的总分、平均分(精确到小数点后两位,舍去部分按四舍五入规则计入最后一位)。

浮点数保留小数的相关知识可参考:
https://blog.csdn.net/huaishuming/article/details/17752365


注意:未用学生类对象封装数据的,本题计0分

输入格式:

5个学生信息,每个学生信息格式:

学号+英文空格+姓名+英文空格+语文成绩+英文空格+数学成绩+英文空格+物理成绩
例如:
22201311 张琳 80 80 80

22201312 黄昊 66 82 81

22201313 李少辰 77 76 80

22201314 袁婷 62 79 90

22201315 朱哲一 74 98 94

输出格式:

5个学生信息,每个学生信息格式:

学号+英文空格+姓名+英文空格+总成绩+英文空格+平均分

例如:

22201311 张琳 240 80.00

22201312 黄昊 229 76.33

22201313 李少辰 233 77.67

22201314 袁婷 231 77.00

22201315 朱哲一 266 88.67

输入样例:

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

22201311 张琳 80 80 80
22201312 黄昊 66 82 81
22201313 李少辰 77 76 80
22201314 袁婷 62 79 90
22201315 朱哲一 74 98 94

输出样例:

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

22201311 张琳 240 80.00
22201312 黄昊 229 76.33
22201313 李少辰 233 77.67
22201314 袁婷 231 77.00
22201315 朱哲一 266 88.67
代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
import java .util.Scanner;
import java .util.List;
import java.text.DecimalFormat;

class Student{
	String name;
	String ID;
	int Chinese;
	int Mathscore;
	int Physics;
	
     public Student(String name,String ID, int Chinese,int Mathscore,int Physics) {
		this.name= name;
    	this.ID = ID;
    	this.Chinese=Chinese;
    	this.Physics=Physics;
    	this.Mathscore=Mathscore;
	}
	public int AggScore() {
		return Chinese + Mathscore + Physics;
	}
	
	public double AverageScore() {
		int sum = AggScore(); 
		return (double)Math.round(sum/3.0*100)/100;
	}
	public String formScore() {
		DecimalFormat df = new DecimalFormat("#.00");
        return df.format(AverageScore());
	}
	  public String toString() {
        return  ID + " " + name + " " + AggScore() + " " + formScore();
    }
    
}


public class Main {
	public static void main(String[] args) {
		   Scanner input = new Scanner(System.in);
		Student[] students = new Student[5];
		for(int i=0;i<5;i++){
		 
		   String line= input.nextLine();
		   String [] info = line.split(" ");
		   String iD = info[0];
		   String name=info[1];
		  int chinese=Integer.parseInt(info[2]); 
		  int Math= Integer.parseInt(info[3]);
		  int Physics=Integer.parseInt(info[4]);
		  students[i]=new Student(name,iD,chinese,Math,Physics);
		}
		
		for (int i = 0; i < 5; i++) {
         System.out.println(students[i]);
        }
}
}

  

这题其实还好,学习了怎么用空格分隔符合,然后将输入的字符串按自己的需求赋值。   第二次题目集7-2 7-2 成绩计算-2-关联类 分数 10 作者 蔡轲 单位 南昌航空大学

创建成绩类,包含:

属性:平时成绩(int)、期末成绩(int)

方法:计算总成绩(计算规则:平时成绩*0.4+期末成绩*0.6,保留整数部分,小数部分直接丢弃)

创建学生类,包含:

属性:学号(String)、姓名(String)、语文成绩(成绩类)、数学成绩(成绩类)、物理成绩(成绩类)

方法:计算总分、计算平均分

输入3个学生的信息,将每个学生的信息封装在一个学生对象中。

按输入顺序依次输出3个学生的总分、平均分(精确到小数点后两位,舍去部分按四舍五入规则计入最后一位)。

浮点数保留小数的相关知识可参考:https://blog.csdn.net/huaishuming/article/details/17752365


注意:未用学生类对象封装数据的,本题计0分

输入格式:

依次输入3个学生的每门课成绩,每个学生成绩信息格式:

学号+英文空格+姓名+英文空格+课程名+英文空格+平时成绩+英文空格+期末成绩
注:3个学生的课程顺序可能会不一致

例如:
22201311 张琳 语文 70 80

22201311 张琳 数学 85 89

22201311 张琳 物理 75 83

22201312 黄昊 语文 66 78

22201312 黄昊 数学 76 82

22201312 黄昊 物理 83 82

22201313 李少辰 语文 86 76

22201313 李少辰 数学 78 76

22201313 李少辰 物理 87 76

输出格式:

3个学生信息,每个学生信息格式:

学号+英文空格+姓名+英文空格+总成绩+英文空格+平均分

例如:


22201311 张琳 242 80.67

22201312 黄昊 234 78.00

22201313 李少辰 236 78.67

输入样例:

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

22201311 张琳 语文 70 80
22201311 张琳 数学 85 89
22201311 张琳 物理 75 83
22201312 黄昊 语文 66 78
22201312 黄昊 数学 76 82
22201312 黄昊 物理 83 82
22201313 李少辰 语文 86 76
22201313 李少辰 数学 78 76
22201313 李少辰 物理 87 76

输出样例:

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

22201311 张琳 242 76.67 84.00 80.67
22201312 黄昊 234 75.00 80.67 78.00
22201313 李少辰 236 83.67 76.00 78.67

 

mport java.text.DecimalFormat;
import java.util.Scanner;

class Student{
	String name;
	String ID;
	Score Chinese;
	Score Mathscore;
	Score Physics;
	
     public Student(String name,String ID, Score Chinese,Score Mathscore,Score Physics) {
		this.name= name;
    	this.ID = ID;
    	this.Chinese=Chinese;
    	this.Physics=Physics;
    	this.Mathscore=Mathscore;
	}
	public int AggScore() {
		return Chinese.getScore() + Mathscore.getScore() + Physics.getScore();
	}
	
	public double AverageScore() {
		int sum = AggScore(); 
		return (double)Math.round(sum/3*100)/100;
	}
	public String formScore() {
		DecimalFormat df = new DecimalFormat("#.00");
        return df.format(AverageScore());
	}
	 public void print() {
		    System.out.println(ID+" "+name+" "+AggScore()+" "+" "+AverageScore());
    }
}
class Score {
  int nomalscore;
  int finalscore;
  public Score(int nomalscore,int finalscore) {
	  this.nomalscore = nomalscore ;
	  this.finalscore = finalscore ;
  }

  public int totalscore(){
	  return (int)(nomalscore*0.4+finalscore *0.6);
  }
    public int getScore() {
	  return totalscore();
  }
}
public class Main {
	public static void main(String[] args) {
		Student[] students = new Student[3];
		Scanner input = new Scanner(System.in);
		    for(int i=0;i<3;i++){
		    String line1= input.nextLine();
		    String[] info1 = line1.split(" ");
		    String iD1 = info1[0];
		    String name1=info1[1];
		    String course1 =info1[2]; 
		    int nomalscore1= Integer.parseInt(info1[3]);
		    int finalscore1=Integer.parseInt(info1[4]);
		    Score chineseScore=new Score(nomalscore1, finalscore1);
		    
		    String line2= input.nextLine();
		    String[] info2 = line2.split(" ");
		    String iD2 = info2[0];
		    String name2=info2[1];
		    String course2 =info2[2]; 
		    int nomalscore2= Integer.parseInt(info2[3]);
		    int finalscore2=Integer.parseInt(info2[4]);
		    Score mathScore =new Score(nomalscore2, finalscore2);
		    
		    String line3= input.nextLine();
		    String[] info3 = line3.split(" ");
		    String iD3 = info3[0];
		    String name3=info3[1];
		    String course3 =info3[2]; 
		    int nomalscore3= Integer.parseInt(info3[3]);
		    int finalscore3=Integer.parseInt(info3[4]);
		    Score physics=new Score(nomalscore3, finalscore3);
		 
		    students[i]=new Student(name3, iD3, chineseScore, mathScore, physics);
		    }

		for (int i = 0; i < 3; i++) {
	          students[i].print();
	     }
}
}

  这题我给的代码其实不能实现需求,当时写这道题目的时候感觉题目有问题,用平时分和期末成绩算最后的总分总是算不对例子的输出,后来问了同学才知道他们是所有的平时分平均算的,而我是一次一次算的,所有当我用平时分和考试成绩算出87这个整数的时候,就已经走上了歧途了。。。

 

第二次题目集 7-7

7-7 菜单计价程序-1 分数 30 作者 蔡轲 单位 南昌航空大学

某饭店提供4种菜,每种菜品的基础价格如下:
西红柿炒蛋 15
清炒土豆丝 12
麻婆豆腐 12
油淋生菜 9

设计点菜计价程序,根据输入的订单,计算并输出总价格。
订单由一条或多条点菜记录组成,每条记录一行,最后以"end"结束
每条点菜记录包含:菜名、份额两个信息。
份额可选项包括:1、2、3,分别代表小、中、大份)

不同份额菜价的计算方法:
小份菜的价格=菜品的基础价格。
中份菜的价格=菜品的基础价格1.5。
小份菜的价格=菜品的基础价格
2。
如果计算出现小数,按四舍五入的规则进行处理。

参考以下类的模板进行设计:
菜品类:对应菜谱上一道菜的信息。
Dish {
String name;//菜品名称
int unit_price; //单价
int getPrice(int portion)//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份)
}

菜谱类:对应菜谱,包含饭店提供的所有菜的信息。
Menu {
Dish[] dishs ;//菜品数组,保存所有菜品信息
Dish searthDish(String dishName)//根据菜名在菜谱中查找菜品信息,返回Dish对象。
}

点菜记录类:保存订单上的一道菜品记录
Record {
Dish d;//菜品
int portion;//份额(1/2/3代表小/中/大份)
int getPrice()//计价,计算本条记录的价格
}

订单类:保存用户点的所有菜的信息。
Order {
Record[] records;//保存订单上每一道的记录
int getTotalPrice()//计算订单的总价
Record addARecord(String dishName,int portion)
//添加一条菜品信息到订单中。
}

输入格式:

每条点菜记录的格式:
菜名+空格(英文)+份额
注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。
最后一条记录以“end”结束。

输出格式:

订单上所有菜品的总价(整数数值),每份菜
如果订单中包含不能识别的菜名,则在总价之前输出“** does not exist”,**是不能识别的菜名

输入样例:

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

麻婆豆腐 2
西红柿炒蛋 3
end

输出样例:

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

48

输入样例1:

订单中包含不存在的菜品记录。例如:

麻婆豆腐 2
炒脆肚 2
西红柿炒蛋 3
end

输出样例1:

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

炒脆肚 does not exist
48

 

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Dish {
    String name; // 菜品名称
    int unit_price; // 单价

    int getPrice(int portion) {
        if(portion==1)
                return unit_price;
        if(portion==2)
                return (int)Math.round(unit_price * 1.5f);
        if(portion==3)
                return unit_price * 2;
        return 0;
        }
    }

class Menu {
    Dish[] dishes; // 菜品数组,保存所有菜品信息

    Dish searchDish(String dishName) {
        for (Dish dish : dishes) {
            if (dish.name.compareTo(dishName)==0) {
                return dish;
            }
        }
        return null;
    }
}

class Record {
    Dish d; // 菜品
    int portion; // 份额(1/2/3代表小/中/大份)

    int getPrice() {
        return d.getPrice(portion);
    }
}

class Order {
    Record[] records; // 保存订单上每一道的记录

    int getTotalPrice() {
        int totalPrice = 0;
        for (Record record : records) {
            totalPrice += record.getPrice();
        }
        return totalPrice;
    }

    Record addARecord(Menu menu ,String dishName, int portion) {
        
        Dish dish = menu.searchDish(dishName);
        if (dish == null) {
            System.out.println(dishName + " does not exist");
            return null;
        } else {
            Record record = new Record();
            record.d = dish;
            record.portion = portion;
            return record;
        }
    }
}


public class Main {
    public static void main(String[] args) {
	        Scanner scanner = new Scanner(System.in);

	        // 创建菜单
	        Menu menu = new Menu();
	        menu.dishes = new Dish[4];
	        menu.dishes[0] = new Dish();
	        menu.dishes[0].name = "西红柿炒蛋";
	        menu.dishes[0].unit_price = 15;
	        menu.dishes[1] = new Dish();
	        menu.dishes[1].name = "清炒土豆丝";
	        menu.dishes[1].unit_price = 12;
	        menu.dishes[2] = new Dish();
	        menu.dishes[2].name = "麻婆豆腐";
	        menu.dishes[2].unit_price = 12;
	        menu.dishes[3] = new Dish();
	        menu.dishes[3].name = "油淋生菜";
	        menu.dishes[3].unit_price = 9;

	        // 创建订单
	        Order order = new Order();
	        List<Record> recordList = new ArrayList<>();

	        // 处理输入的点菜记录
	        while (true) {
	            String line = scanner.nextLine();
	            if (line.equals("end")) {
	                break;
	            }
	            String[] parts = line.split(" ");
	            String dishName = parts[0];
	            int portion = Integer.parseInt(parts[1]);
	            Record record = order.addARecord(menu, dishName, portion); // 将menu作为参数传递
	            if (record != null) {
	                recordList.add(record);
	            }
	        }

	        // 将点菜记录添加到订单中
	        order.records = recordList.toArray(new Record[0]);

	        // 计算并输出总价格
	        int totalPrice = order.getTotalPrice();
	        System.out.println(totalPrice);

	        scanner.close();
	    }
}

  这道题说实话,其实我到现在都不是很能理解功能是如何实现的,创建了很多类,还把这些类串联了起来,达到了菜单的效果。

至于第三次题目集的7-2就是这题的升级版,在网上找了类似的例子程序,发现给的例子并没有用到很多类,而是使用了哈希表来实现的,给我看的一愣一愣的的,加上当时正值国庆放假第二天,就没写QWQ。

采坑心得

编译的过程中其实一直会遇到Index 1 out of bounds for length 1,用split没法识别空格将字符串赋值,但东改西改就搞定了也不知道为啥。

还有pta是真的让人心累啊,格式要求真的很奇葩,有的输出明明看起来一模一样,符合都一样,但硬是要复制参考输出的符号输出,才能通过测试点,有的测试点也是莫名其妙,明明输出结果是正常的,就是过不了测试点。。。

总结

题目集给的很好,有简单有难题,虽然难题(我目前觉得难)写不出来,但我还是觉得很好,因为让我看出来今后代码应用的方向,就比如菜单程序。但同时有的题目确实容易引起歧义,让人摸不着头脑。这里我感觉很对不起第三次题目集,因为我真的做不出来那第二道题QWQ希望下次题目集还有类似的题目出现,我能够把题目搞定吧。

 

 

标签:题目,String,int,menu,return,new,三次,Java,public
From: https://www.cnblogs.com/bsj666/p/17747470.html

相关文章

  • java pta1-3总结
    前言第一次题目集知识点:基础知识点,主要包括算术运算、条件语句、循环语句、字符串操作等。题量:较多,9道题目。难度:较低,适合初学者练习。第二次题目集知识点:进阶知识点,主要包括数组、函数、类、异常处理等。题量:较多,8道题目。难度:中等,对于有一定基础的学生来说比较有挑战性。......
  • 题目集1~3的总结性Blog
    前言:到目前为止,本人已经完成了三次Java编程习题作业,逐步掌握Java语言的各种特性和用法。在三次题目集中,我学习了Java编程语言的各种知识点,包括条件语句、循环结构、数组、字符串处理、面向对象编程等。总体来说,题目集分为基础、进阶和高级部分,难度逐步增加,涵盖了Java编程的各个方......
  • 题目集1-3的总结Blog
    一、前言在近来的三次实验中,学习到的知识自然不容多疑,但同样的,遇到的困难也一点点的呈现了。知识点包括如下:1、创建类,在三个题目中,里面最多使用的就是我们最近强调的使用类,类对象封装数据。2、类型定义:类和对象、属性和方法等的定义。题量比较大的,对于初学的我们而言要一个个......
  • 基于Java的大学生线上心理咨询系统(亮点:在线预约、在线咨询、留言回复)
    (大学生线上心理咨询室系统)三、开发环境与技术3.1MySQL数据库本课题研究研发的应用程序在数据操作过程中是难以预测的,而且常常产生变化。没有办法直接从word里写数据,这不但不安全,并且难以实现应用程序的功能。想要实现运用所需要的数据存放功能,就必定要选择专业的数据库存储软......
  • 题目集1-3的总结
    前言:目前已经完成了一些关于Java的编程练习题,并且在逐渐掌握Java语言的基本知识和编程技巧。每个题目都涉及不同的知识点和概念,通过挑战自己解决问题,本人有效地学习和应用这些知识。对于复杂的题目集,确实需要更多的时间和精力来理解和解决。尽管如此,坚持练习,并解决各种难题会帮助......
  • 南昌航空大学题目集1~3总结
    (1)前言:第一次题目集主要让我们熟悉了Java的语法,格式,以及简单的应用方式,难度比较简单,但是相对的题量比较大,在对于当时初学Java的我们来说还是要认真对待的。第二次题目集在第一次题目集的难度上提升较大,但是还是在自学有关知识后还是可以处理的,学习了浮点数保......
  • 题目集1-3总结
    一、前言在过去的几周里,我投入了大量的时间和精力来研究和发展针对题目集1到3的解决方案。从第一次的题目集简单的逻辑以及输入、计算、输出到面向对象类的设计、类和数组的应用,学习了hashmap/hashset,封装性等等。  整体来看,这一阶段的题目涵盖了广泛的主题,包括数据结构、......
  • 【JAVA】算法
    start 1.SHA-256算法(单向、验证完整性/一致性,暂时安全)1importjava.nio.charset.StandardCharsets;2importjava.security.MessageDigest;3importjava.security.NoSuchAlgorithmException;45publicclassSHA256Example{67publicstaticStringhas......
  • 【93】基于java的校园课程作业管理系统设计与实现
    本章节给大家带来一个基于java校园课程作业管理系统设计与实现,可适用于班级管理、学生管理、教师管理、课程管理、课程信息管理、学生选课管理、作业布置管理、作业提交管理、作业评分管理、课程评价管理、课程资源管理,作业管理系统,大学提交作业,布置作业管理系统,学校作业管理系统......
  • JavaWeb
    JavaWeb开发是指使用Java技术进行Web应用程序开发,包括前端页面、后端业务逻辑、数据库交互等方面。JavaWeb开发是目前Web应用程序开发领域中最常用的技术之一,其优势在于稳定、安全、可扩展性强。JavaWeb开发主要涉及以下几个方面:1.ServletServlet是JavaWeb开发中最基础的......