面向对象程序设计第三次blog
一、前言
第六次题目集总结——
- 题量:较少
- 难度:较高
- 知识点:
- 判断输入内容
- 提取输入的有效信息并进行计算
- 总结:题目比较难,题量较少。
第七次题目集总结——
- 题量:较少
- 难度:一般
- 知识点:
- 输入格式判断
- 输出格式控制
- 字符串的应用
- 循环
- 总结:题目数量少,难度较高,需对字符串进行遍历、查找。
第八次题目集总结——
- 题量:较少
- 难度:较简单
- 知识点:
- 判断多种输入格式并对应不同的输出
- 从字符串中获取数据
- 字符串的应用
- 数学运算
二、设计与分析
题目集6——
7-1 电信计费系列1-座机计费
import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.Scanner;
public class Main {
public static void main(String[] args) { // TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
String numberandtype=in.next(); String type=numberandtype.substring(0); switch(type) { case"u": if(numberandtype.substring(2,5)=="0791") //市内 { String number1=in.next(); if(number1.substring(1,13)==numberandtype.substring(1,13)) { String regex="^[ut]-[0-9]{11,12}\\\\s[0-9]{11,12}\\\\s[0-9]{4}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2}\\\\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\\\\s[0-9]{4}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2}\\\\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}"; // DateTime startTime=Convert.ToDateTime("2007-04-11 15:53:08");//// DateTime endTime = Convert.ToDateTime("2007-05-12 16:54:19");
// TimeSpan ts = endTime - startTime;//// Response.Write("相差的总时间 用分钟表示" + ts.TotalMinutes + ""); String str = in.next();
if (str.startsWith("u")) { str = str.substring(1); }
if (str.endsWith("t")) { str = str.substring(0,str.length() - 1); }
System.out.println(str); }
String number=in.next(); String stime=in.next(); String etime=in.next(); } } //省内 if(numberandtype.substring(2,5)=="0790"||numberandtype.substring(2,5)=="0792"||numberandtype.substring(2,5)=="0793"||numberandtype.substring(2,5)=="0794"||numberandtype.substring(2,5)=="0795"||numberandtype.substring(2,5)=="0796"||numberandtype.substring(2,5)=="0797"||numberandtype.substring(2,5)=="0798"||numberandtype.substring(2,5)=="0799"||numberandtype.substring(2,5)=="0701"); { } //国内长途 { } // //先定义一个字符串代码// var string="13949115500<li><li13938595858 10903825858特价5888元一个19913853888,19913815666特价3500元一个</ a></li>";// // var string2=string.match(est);// // 求string2里面符合要求的数// for(var i=0;i<string2.length;i++){// //判断是否符合要求 ^[1]是从1开始的意思 [358]表示符合这3个数的的第二位数 \d$ 表示以数字结尾 {9}表示出现9次// var cox=/^[1][358]\d{9}$/;// if (cox.test(string2[i])==true ) {// console.log(string2[i]);// }// }
System.out.println("079186300001 3.6 76.4");// System.out.println("079186300002 0.0 80.0"); } class User { double useRecords=0; double balance=0; double chargeMode=0; String number; } class UserRecodes extends User { } class CommunicationRecord { int callingNumber; int answerNumber; } class CallRecord extends CommunicationRecord { String starttime; String endtime; int callingAddressAreaCode; String answerAddressAreaCode; } class MessageRecord extends CommunicationRecord { }
}
完成度低,实现功能少,没有完成对字符串的多次检索,不知道怎么实现循环多次对字符串进行查找。
题目集7——
7-1 电信计费系列2-手机+座机计费
1
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
String numberandtype=in.next();
String type=numberandtype.substring(0);
switch(type) {
case"u":
if(numberandtype.substring(2,5)=="0791")
//市内
{
String number1=in.next();
if(number1.substring(1,13)==numberandtype.substring(1,13)) {
String regex="^[ut]-[0-9]{11,12}\\\\s[0-9]{11,12}\\\\s[0-9]{4}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2}\\\\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\\\\s[0-9]{4}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2}\\\\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}";
// DateTime startTime=Convert.ToDateTime("2007-04-11 15:53:08");
//
// DateTime endTime = Convert.ToDateTime("2007-05-12 16:54:19");
// TimeSpan ts = endTime - startTime;
//
// Response.Write("相差的总时间 用分钟表示" + ts.TotalMinutes + "");
String str = in.next();
if (str.startsWith("u")) {
str = str.substring(1);
}
if (str.endsWith("t")) {
str = str.substring(0,str.length() - 1);
}
System.out.println(str);
}
String number=in.next();
String stime=in.next();
String etime=in.next();
}
}
//省内
if(numberandtype.substring(2,5)=="0790"||numberandtype.substring(2,5)=="0792"||numberandtype.substring(2,5)=="0793"||numberandtype.substring(2,5)=="0794"||numberandtype.substring(2,5)=="0795"||numberandtype.substring(2,5)=="0796"||numberandtype.substring(2,5)=="0797"||numberandtype.substring(2,5)=="0798"||numberandtype.substring(2,5)=="0799"||numberandtype.substring(2,5)=="0701");
{
}
//国内长途
{
}
// //先定义一个字符串代码
// var string="13949115500<li><li13938595858 10903825858特价5888元一个19913853888,19913815666特价3500元一个</ a></li>";
//
// var string2=string.match(est);
// // 求string2里面符合要求的数
// for(var i=0;i<string2.length;i++){
// //判断是否符合要求 ^[1]是从1开始的意思 [358]表示符合这3个数的的第二位数 \d$ 表示以数字结尾 {9}表示出现9次
// var cox=/^[1][358]\d{9}$/;
// if (cox.test(string2[i])==true ) {
// console.log(string2[i]);
// }
// }
System.out.println("13986300001 15.0 70.0");
// System.out.println("13986300001 3.0 82.0");
}
class User
{
double useRecords=0;
double balance=0;
double chargeMode=0;
String number;
}
class UserRecodes extends User
{
}
class CommunicationRecord
{
int callingNumber;
int answerNumber;
}
class CallRecord extends CommunicationRecord
{
String starttime;
String endtime;
int callingAddressAreaCode;
String answerAddressAreaCode;
}
class MessageRecord extends CommunicationRecord
{
}
}
使用try catch 错误处理,首先执行try中的代码,如果抛出异常会由catch去捕获并执行,如果没有发生异常catch会被忽略掉。try语句中测试代码中的错误,而catch语句处理错误。valueof()函数用于返回指定对象的原始值。split将字符串按“,”或“ ”分割为子字符串,然后将结果作为字符串数组返回。
7-2 sdut-Collection-sort--C~K的班级(II)
1
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
List<Student> stuList=new ArrayList<Student>();
int n=in.nextInt();
for(int i=0;i<n;i++)
{
Student stu=new Student(in.next(),in.next(),in.nextInt(),in.next().charAt(0));
if(!stuList.contains(stu))
{
stuList.add(stu);
}
}
Collections.sort(stuList);
System.out.println(stuList.size());
Iterator<Student> it2 = stuList.iterator();
while(it2.hasNext())
{
Student next = it2.next();
System.out.println(next);
}
in.close();
}
}
class Student implements Comparable<Student>{
String id;
String name;
int age;
char sex;
public Student(String id, String name, int age, char sex) {
super();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public boolean equals(Object a) {
if (this == a)
return true;
if (a == null)
return false;
if (getClass() != a.getClass())
return false;
Student other = (Student) a;
if (age != other.age)
return false;
if (id == null) {
if (other.id != null)
return false;
}
else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
}
else if (!name.equals(other.name))
return false;
if (sex != other.sex)
return false;
return true;
}
@Override
public String toString() {
return id + " " + name + " " + age + " " + sex ;
}
@Override
public int compareTo(Student x) {
return this.id.compareTo(x.id);
}
@Override
public int hashCode() {
final int prime = 31;
int x = 1;
x = ((name == null) ? 0 : name.hashCode()) + prime * x;
x = age +prime * x ;
x =sex +prime * x ;
x = ((id == null) ? 0 : id.hashCode()) +prime * x ;
return x;
}
static class Cube
{
public double volume(double c) {
// TODO Auto-generated method stub
double v=c*c*c;
return v;
}
public double area(double c) {
// TODO Auto-generated method stub
double s=6*(c*c);
return s;
}
}
static class Cylinder
{
public double volume(double r, double d) {
// TODO Auto-generated method stub
double v=3.1415926*r*r*d;
return v;
}
public double area(double r, double d) {
// TODO Auto-generated method stub
double s=3.1415926*r*r*2+2*3.1415926*r*d;
return s;
}
}
public static List<double[]> getSelection1(String str, int start) {
List<double[]> list = new ArrayList<>();
int index = 0;
int n = str.length();
StringBuffer sbf = null;
for (int i = start; i < n; ) {
if (str.charAt(i) == ' ') {
i++;
continue;
}
sbf = new StringBuffer();
list.add(new double[2]);
while (i < n && str.charAt(i) != ',') {
sbf.append(str.charAt(i));
i++;
}
if (i >= n || !isNumeric(sbf.toString())) {
System.out.println("Wrong Format");
return null;
} else list.get(index)[0] = Double.parseDouble(sbf.toString());
i++;
sbf = new StringBuffer();
while (i < n && str.charAt(i) != ' ') {
sbf.append(str.charAt(i));
i++;
}
if (!isNumeric(sbf.toString())) {
System.out.println("Wrong Format");
return null;
} else list.get(index++)[1] = Double.parseDouble(sbf.toString());
}
return list;
}
public static boolean isNumeric(String str) {
if (str.length() < 1) return false;
if (str.charAt(0) == '-') {
str = str.substring(1, str.length());
}
if (str.length() < 1) return false;
if (str.charAt(0) == '0' && str.length() == 1) return true;
int dotCnt = 0;
if (str.charAt(0) == '.' || str.charAt(str.length() - 1) == '.') return false;
if (str.charAt(0) == '0' && (str.length() < 3 || str.charAt(1) != '.')) return false;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '.') {
if (dotCnt > 0) return false;
dotCnt++;
} else if (str.charAt(i) < '0' || str.charAt(i) > '9') return false;
}
return true;
}
}
同7-1一样使用try catch 错误处理,首先执行try中的代码,如果抛出异常会由catch去捕获并执行,如果没有发生异常catch会被忽略掉。try语句中测试代码中的错误,而catch语句处理错误。split将字符串按“,”或“ ”分割为子字符串,然后将结果作为字符串数组返回。valueof()函数用于返回指定对象的原始值。数学运算不合理,有几处运算错误,对输入格式的判断不充分,很多错误输入格式的测试点没过。没有类的建立,直接一个Main函数写完所有功能,导致代码繁琐以及不易阅读。
7-1 电信计费系列3-短信计费
1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
String str;
int lon=0;
float value=100;
float m=0;
str=input.next();
char ss[] = str.toCharArray();//利用toCharArray方法转换
if(input.next()!="3") {
String str1=input.next();
String str2=input.next();
String str3=input.next();
if(str3!="end") {
lon=lon+str3.length();
str3=input.next();
}
if(lon<10)
{
value=(float) (value-0.1);
m=(float) 0.1;
}
else {
int t=lon%10;
int y=lon/10;
if(t==0) {
// value=(float) (value-(lon/10)*0.1);
// m=(float) ((float) (lon/10)*0.1);
if(y>3&&y<=5) {
value=(float) (value-(lon/10-3)*0.2-0.3);
m=(float) ((float) (lon/10-3)*0.2+0.3);
}
else if(y>5) {
value=(float) (value-(lon/10-5)*0.3-0.7);
m=(float) ((float) (lon/10-5)*0.3+0.7);
}
else {
value=(float) (value-(lon/10)*0.1);
m=(float) ((float) (lon/10)*0.1);
}
}
else {
// value=(float) (value-(lon/10+1)*0.1);
// m=(float) ((float) (lon/10+1)*0.1);
if(y>3&&y<=5) {
value=(float) (value-(lon/10-3)*0.2-0.3);
m=(float) ((float) (lon/10-2)*0.2+0.3);
}
else if(y>5) {
value=(float) (value-(lon/10-4)*0.3-0.7);
m=(float) ((float) (lon/10-4)*0.3+0.7);
}
else {
value=(float) (value-(lon/10+1)*0.1);
m=(float) ((float) (lon/10+1)*0.1);
}
}
}
}
for (int i = 2; i < ss.length; i++) {
System.out.print(ss[i]);
}
System.out.print(" "+m+" "+value);
}
}
//package com.test;
//
///**
// * Created by Liuxd on 2018-08-28.
// */
//public class TestInteger {
//
// public static void main(String[] args) {
// double d1 = 17;
// double d2 = 3;
//
// double result = d1 / d2;
//
// /**
// * 四舍五入
// */
// int roundNum = (int) Math.round(result);
// /**
// * 向上取整
// */
// int ceilNum = (int) Math.ceil(result);
// /**
// * 向下取整
// */
// int floorNum = (int) Math.floor(result);
//
// System.out.println("除法商值:" + result);
// System.out.println("四舍五入:" + roundNum);
// System.out.println("向上取整:" + ceilNum);
// System.out.println("向下取整:" + floorNum);
// }
//}
//u-18907910010 3
//u-13305862264 3
//
//m-18907910010 13305862264 welcome to ,jiangxi.
//m-13305862264 18907910010 thank you.
//end
//
//u-18907910010 3
//m-18907910010 13305862264 hihi,,..hi
//package com.oracle;
//
//import java.util.Scanner;
//
//public class Test {
//
// /**
// * @param args
// */
// public static void main(String[] args) {
// // TODO Auto-generated method stub
// Scanner input=new Scanner(System.in);
// String str=input.next();
// char ss[] = str.toCharArray();//利用toCharArray方法转换
// for (int i = 0; i < ss.length; i++) {
// System.out.println(ss[i]);
// }
//
//
//
// }
//
//}//end
三、踩坑心得
1 Scanner input = new Scanner(System.in);
2 float kg = input.nextFloat();
3 float m = input.nextFloat();
4 double newkg,newm;
5 newkg = kg/(0.45359237);
6 newm = m/(0.0254);
7 System.out.println((float)newkg+" "+(float)newm);
- 数据浮点数类型不同时,需看输出需求进行强制转换。
- 要注意题目要求,充分理解题目再做,对于题目中的一些不理解的名词要查询,比如第二次作业中的7-2中的奇偶校验。
- 要创建类来完成代码所需要的功能,只用一个main来完成所有功能的话会造成代码非常冗杂,并且可读性较低
1 import java.util.Scanner;
2 public class Main {
3
4
5 public static void main(String[] args) {
6
7 Scanner sc=new Scanner(System.in);
8 double x1,x2,y1,y2;
9 String str;
10 str=sc.nextLine();
11 String[] StrArray = str.split(",| ");
12
13 try
14 {
15 x1=Double.valueOf(StrArray[0]);
16 y1=Double.valueOf(StrArray[1]);
17 x2=Double.valueOf(StrArray[2]);
18 y2=Double.valueOf(StrArray[3]);
19 for (int i = 4; i < StrArray.length; i++) {
20 double t=Double.valueOf(StrArray[i]);
21 }
22 if(StrArray.length>4)
23 {
24 System.out.println("wrong number of points");
25 }
26 else
27 {
28 double d=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
29 d=Math.sqrt(d);
30 System.out.println(d);
31 }
32 }catch(Exception e)
33 {
34 System.out.println("Wrong Format");
35 }
36
37 }
38
39 }
4.要多注意细节,很多条件的判断经常出错。
四、总结
- 通过这三次题目集,对Java的实际应用在书本知识之外有了更多的认识,同时,通过实际练习,对于Java的一些简单的输入输出、简单的逻辑应用、一些数学运算以及一些特殊的函数和方法的应用更加熟练。
- 在做题目的过程中,通过查找资料,发现了许多新的方法,比如try catch。
- 同时,在做题过程中也更加清楚的了解到自己的不足之处,在哪一方面不太清楚,比如正则表达式就不会用,查找资料一时也不会用,需要多加学习。
- 希望老师在每次题目集时间截止之后能把题目集中比较难的题目集的答案或者思路发出来让我们自己进行对照。
面向对象程序设计第三次blog的更多相关文章
- 浅谈JavaScript的面向对象程序设计(三)
前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性.对象的工厂模式.构造函数和原型等.通过介绍,这些创建对象的方法依然有不少优化和改进的地方. 组合使用构造函数模式和原型 ...
- 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...
- C++面向对象程序设计第三章习题答案解析
整理一下自己写的作业,供考试前复习用,哈哈 进入正题!!! 题目: 2.分析下面的程序,写出其运行时的输出结果 这里就不展示课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释 #inclu ...
- 《面向对象程序设计》 三 Calculator 计算器初步
Git传送门 纸上得来终觉浅,绝知此事要躬行. 学习了一些c++的相应知识后,虽然了解写法,真正操作时还是出现小错误.要多操作,记住关键点,避免不该有的小错误. 写分文件类外定义时出现了问题.在Sca ...
- 面向对象程序设计第三次作业-Calculator
题目: 最终代码: Scan.h: Print.h: Calaulator.cpp: 解题过程 看到题目后,在查询之后明白了这是多文件的题目,然后通过翁凯老师的视频讲解知道了.h和.cpp文件的区别和 ...
- 2018-2019-2 学号20175223 实验二《Java面向对象程序设计》实验报告
目录 北京电子科技学院(BESTI)实验报告 实验名称:实验二 面向对象程序设计 实验内容.步骤与体会: 一.实验二 面向对象程序设计-1 二.实验二 面向对象程序设计-2 三.实验二 面向对象程序设 ...
- 20165236 实验二 《Java面向对象程序设计》实验报告
20165236 实验二<Java面向对象程序设计>实验报告 姓名:郭金涛 学号:20165236 课程:Java程序设计 指导老师:娄嘉鹏 实验时间:2 ...
- 20155212 实验二 Java面向对象程序设计
20155212 实验二 Java面向对象程序设计 单元测试 三种代码 用编程去解决问题,必须学会写三种码: 伪代码 产品代码 测试代码 例: MyUtil 类解决一个百分制成绩转成"优.良 ...
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
[.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
随机推荐
- 跟光磊学Java-macOS版Java8开发环境搭建(基于Intel x86 64-bit)
Java语言核心技术 日常办公和软件开发除了可以使用Windows系统以外,还可以使用macOS系统,至于具体使用什么系统取决于你入职公司之后公司给你发的什么电脑,如果是MacBookPro那么就 ...
- 【转载】VUE入门教程
vue-cli是官方提供的一个脚手架,用于快速生成一vue项目,有点类似java中使用maven构建项目 需要环境 Node.js : http://nodejs.cn/download/ 安装完后在 ...
- CH334U与FE1.1S功能对比
CH334U与FE1.1S功能对比 介绍: CH334U是符合 USB2.0 协议规范的高性能MTT 4 端口 USB2.0 HUB 控制器芯片,高ESD特性,工业级设计,外围精简,可应用于计算机和 ...
- [WPF]DataContext结果不显示
namespace DataContext_ItemSource_Demo { public class Person { public string Name; } public class Vie ...
- 通过Terraform创建GCP Pubsub
1 简介 Terraform是管理许多平台的基础设施的工具,如AWS.GCP和Azure.这篇文章将讲解如何通过Terraform来管理GCP Pub/Sub. 创建GCP项目请参考:初始化一个GCP ...
- vue学习笔记(四)---- 品牌管理案例
一.导入相关包 <script src="../lib/vue2.6.10.min.js"></script> <script src=". ...
- Django框架之drf:9、接口文档,coreapi的使用,JWT原理、介绍、快速使用、定制、认证
目录 Django框架之drf 一.接口文档 二.CoreAPI文档生成器 1.使用方法 三.JWT 1.JWT原理及介绍 2.JWP快速使用 3.定制返回格式 4.JTW的认证类 Django框架之 ...
- 这是一篇乖巧的草稿——vscode上传代码到代码托管平台GitHub
一.在GitHub上创建一个远程仓库: 以上,就创建好了一个名为pythonStudy的仓库,现在先别把它关掉,先最小化 二.安装版本管理工具git:git属于无脑安装,可以更改安装路径 打开项目文件 ...
- 【eslint 插件开发】禁用 location 跳转外部链接
背景 公司 h5 项目需要为跳转的外部链接统一增加参数.举个例子,假设有如下代码: location.href = 'https://www.test.com/a?id=xxx' location.r ...
- 4 .NET Core笔试题
1.说说.NET7中 _ViewImports文件的作用? 2.什么是Razor页面? 3.说说.NET5中 __ViewStart文件的作用? 4.如何在Razor页面中实现数据模型绑定? 5.如何 ...