面向对象程序设计第三次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表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
随机推荐
- 使用插件式开发称重仪表驱动,RS232串口对接各类地磅秤数据实现ERP管理
在ERP系统中,采集一线的生产数据是重要工作之一,而称重计量是企业的核心资产数据,人工计重费时费力,还容易出错,重量数据是否正确,直接影响企业的采购或销售额.基于此,由系统对接电子秤实现自动抓取数据是 ...
- [C++]C++11:Function与Bind
std::function 它是函数.函数对象.函数指针.和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针. 以统一的方式处理函数.函数对象.函数指针.和成员函数. ...
- 动力节点—day05
数组 Java语言当中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object 数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据集合),多个数据元素的类型必须是一致的 数组当中 ...
- 结构型模式 - 桥接模式Bridge
学习而来,代码是自己敲的.也有些自己的理解在里边,有问题希望大家指出. 桥接模式的定义与特点 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现 ...
- 定时调度插件------FluentScheduler
定时调度插件------FluentScheduler 源码地址 官网文档地址 使用说明 dll引用 文章使用的版本为5.5.1版本 使用GuGet搜索FluentScheduler即可找到 如果框架 ...
- APP测试注意点-安装卸载与运行
1.安装和卸载 应用在不同系统版本的ios和android是否可以正常安装(适配问题) 安装过程中是否可以取消 手机存储空间不足时安装应用是否有相应提示信息 安装后的应用是否可以正常卸载 卸载后是否会 ...
- 明解STM32—GPIO理论基础知识篇之基本结构
一.前言 万物皆有源头,大家学习单片机的源头操作就是通过GPIO口点灯,GPIO作为STM32最基础的外设,也是大家最先接触的外设.当然,看似基础的GPIO,不仅仅是简单的设置好IO口,让灯亮起就 ...
- P9_组件-swiper和swiper-item的基本用法
swiper 和 swiper-item 组件的基本使用 实现如图的轮播图效果: swiper 组件的常用属性 list.wxml <swiper class="swiper-cont ...
- 视觉十四讲:第十二讲_RGB-D稠密点云
1.点云地图 所谓点云,就是由一组离散的点表示的地图,最基本的点包含x,y,z三维坐标,也可以带有r,g,b的彩色信息. #include <iostream> #include < ...
- SPI的 CLK_POL和CLK_PHA
1.模式0(CPOL=0,CPHA=0) 模式0特性: CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿 CPHA = 0:数据在第1个跳变沿(上升沿)采样 2.模式1(C ...