一、前言

第六次题目集总结——

  • 题量:较少
  • 难度:较高
  • 知识点
  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. 手动解析word Table模块内容

    最近来了一个需求, 需要手动解析word ( 好处就是不需要安装office 以及不会有office解析的线程残留),然后就是可以自定义解析规则,比较方便 比如解析这个word里面的内容: 标题,表格 ...

  2. python多进程程序打包成exe的问题

    粘贴一下部分的多进程代码 if __name__ == '__main__': """"流程模拟""" multiprocessi ...

  3. 小型web产品的功能测试要点或测试大纲

    本文参考配置啦:-- Web类产品功能测试大纲,黑盒测试参考测试范围 [官网]:无 应用场景 黑盒测试,功能测试中常常需要考虑很多问题,这里根据本人的工作经验遇到的进行了系列总结.给出了一个常用的测试 ...

  4. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  5. python进阶之路12之有参装饰器、多层语法糖、递归函数简介

    多层语法糖 def outter1(func1): print('加载了outter1') def wrapper1(*args, **kwargs): print('执行了wrapper1') re ...

  6. [Leetcode]环形链表 II

    题目 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li ...

  7. MySQL 不四舍五入取整、取小数、四舍五入取整、取小数、向下、向上取整

    总结了MySQL中取整和取小数中遇到的问题和解决的几个方法:不四舍五入取整.取小数.四舍五入取整.取小数.向下.向上取整. 其中: 不四舍五入取整(截取整数部分)就是'向下取整': 除了用trunca ...

  8. DVWA系列3:CSRF

    DVWA系列3:CSRF 前言 CSRF(Cross-site request forgery),即跨站请求伪造,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 比如说,用户 ...

  9. 【学习笔记】C/C++ 设计模式 - 工厂模式(下)

    介绍说明 这篇笔记承接<[学习笔记]C/C++ 设计模式 - 工厂模式(上)>文章,主要记录 "抽象工厂设计模式" 的学习笔记,上一次是以音频播放器来作为例子,主要是想 ...

  10. 【学习笔记】C/C++ 设计模式 - 工厂模式(上)

    介绍说明 在年初七的时候,学习了工厂模式,今天在复习的时候发现漏了几个知识点,因此重写这篇文章,以循环渐进的描述方式来对比不同的使用技巧. 工厂设计模式属于 "创建型设计模式",在 ...