一、前言

第六次题目集总结——

  • 题量:较少
  • 难度:较高
  • 知识点
  1. 判断输入内容
  2. 提取输入的有效信息并进行计算
  • 总结:题目比较难,题量较少。

第七次题目集总结——

  • 题量:较少
  • 难度:一般
  • 知识点
  1. 输入格式判断
  2. 输出格式控制
  3. 字符串的应用
  4. 循环
  • 总结:题目数量少,难度较高,需对字符串进行遍历、查找。

第八次题目集总结——

  • 题量:较少
  • 难度:较简单
  • 知识点
  1. 判断多种输入格式并对应不同的输出
  2. 从字符串中获取数据
  3. 字符串的应用
  4. 数学运算

二、设计与分析

题目集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);
  1. 数据浮点数类型不同时,需看输出需求进行强制转换。
  2. 要注意题目要求,充分理解题目再做,对于题目中的一些不理解的名词要查询,比如第二次作业中的7-2中的奇偶校验。
  3. 要创建类来完成代码所需要的功能,只用一个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.要多注意细节,很多条件的判断经常出错。

 

四、总结

  1. 通过这三次题目集,对Java的实际应用在书本知识之外有了更多的认识,同时,通过实际练习,对于Java的一些简单的输入输出、简单的逻辑应用、一些数学运算以及一些特殊的函数和方法的应用更加熟练。
  2. 在做题目的过程中,通过查找资料,发现了许多新的方法,比如try catch。
  3. 同时,在做题过程中也更加清楚的了解到自己的不足之处,在哪一方面不太清楚,比如正则表达式就不会用,查找资料一时也不会用,需要多加学习。
  4. 希望老师在每次题目集时间截止之后能把题目集中比较难的题目集的答案或者思路发出来让我们自己进行对照。

面向对象程序设计第三次blog的更多相关文章

  1. 浅谈JavaScript的面向对象程序设计(三)

    前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性.对象的工厂模式.构造函数和原型等.通过介绍,这些创建对象的方法依然有不少优化和改进的地方. 组合使用构造函数模式和原型 ...

  2. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

  3. C++面向对象程序设计第三章习题答案解析

    整理一下自己写的作业,供考试前复习用,哈哈 进入正题!!! 题目: 2.分析下面的程序,写出其运行时的输出结果 这里就不展示课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释 #inclu ...

  4. 《面向对象程序设计》 三 Calculator 计算器初步

    Git传送门 纸上得来终觉浅,绝知此事要躬行. 学习了一些c++的相应知识后,虽然了解写法,真正操作时还是出现小错误.要多操作,记住关键点,避免不该有的小错误. 写分文件类外定义时出现了问题.在Sca ...

  5. 面向对象程序设计第三次作业-Calculator

    题目: 最终代码: Scan.h: Print.h: Calaulator.cpp: 解题过程 看到题目后,在查询之后明白了这是多文件的题目,然后通过翁凯老师的视频讲解知道了.h和.cpp文件的区别和 ...

  6. 2018-2019-2 学号20175223 实验二《Java面向对象程序设计》实验报告

    目录 北京电子科技学院(BESTI)实验报告 实验名称:实验二 面向对象程序设计 实验内容.步骤与体会: 一.实验二 面向对象程序设计-1 二.实验二 面向对象程序设计-2 三.实验二 面向对象程序设 ...

  7. 20165236 实验二 《Java面向对象程序设计》实验报告

    20165236 实验二<Java面向对象程序设计>实验报告 姓名:郭金涛       学号:20165236      课程:Java程序设计 指导老师:娄嘉鹏       实验时间:2 ...

  8. 20155212 实验二 Java面向对象程序设计

    20155212 实验二 Java面向对象程序设计 单元测试 三种代码 用编程去解决问题,必须学会写三种码: 伪代码 产品代码 测试代码 例: MyUtil 类解决一个百分制成绩转成"优.良 ...

  9. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  10. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

随机推荐

  1. vue-element-admin 安装(node方式)

    vue-element-admin node方式安装 需要的环境: git .node.js 1.git clone 项目(2选 1) // github https://github.com/Pan ...

  2. 微服务框架——SpringBoot

    SpringBoot 1.创建Boot项目的两种方式 1.1通过spring网站创建 进入Spring Initializr 选择填写对应配置,打包 将zip格式的压缩包解压,并导入该项目 1.2 通 ...

  3. P8855 [POI2002]商务旅行

    简要题意 给出一个 \(N\) 个节点的树和一个长度为 \(M\) 的序列 \(S\).你需要从 \(1\) 出发,依次经过 \(S\) 中的所有点,求至少需要经过的边数. \(1 \le N \le ...

  4. VUEX 使用学习三 : mutations

    转载请注明出处: 在 Vuex 中 store 数据改变的唯一方法就是提交 mutations.mutations里面装着一些改变数据方法的集合,这是Vuex 设计很重要的一点,就是把处理数据逻辑方法 ...

  5. 数据库实践丨使用MTK迁移Mysql源库后主键自增列导致数据无法插入问题

    摘要:用户使用Mogdb 2.0.1版本进行业务上线测试,发现在插入数据时,应用日志中提示primary key冲突,用户自查业务SQL没有问题,接到通知后,招手处理故障. 本文分享自华为云社区< ...

  6. (15)go-micro微服务main.go开发

    目录 一 导包 二 配置中心 三 注册中心 四 zap日志初始化 五 初始化Mysql数据库 六 初始化Redis连接 七 注册服务 八 初始化服务 九 注册 handle 十 启动服务 十一 mai ...

  7. JavaScript 检查(Linting)工具的比较

    一个好的检查(linting)工具可以确保一个项目遵循编码规范. 让我们来看看四种流行替代方案的特性和优缺点:JSLint , JSHint , JSCS 和 ESLint . JSLint JSLi ...

  8. Flutter 3.7 新特性:介绍后台isolate通道

    Flutter 3.7 发布,本人对其中后台 isolate 通道比较感兴趣,迫不及待翻译了下Aaron Clarke文章,第一次翻译,有不足地方欢迎各位大佬们评论区指正,我将持续更新到本文,谢谢. ...

  9. 面向对象程序设计(三):new&deleet什么是动态内存

    <C++ primer>中提到:在C++中,动态内存的管理是通过一对运算符来完成的: new 在内存池中为对象分配一块空间,并指向这个对象的指针,我们可以在这里对对象进行初始化: dele ...

  10. C# 编写Windows Service Windows服务程序

    一.新建项目--选择Windows 服务,输入新的项目名称,点击确定. 二.服务名称的设置.服务添加安装程序.服务程序代码 1.服务名称的设置:视图 - 解决方案资源管理器 - 你创建的服务项目 默认 ...