//Scanner这样写?

Scanner input = new Scanner(System.in);

//不断获得下一个单词

names[i] = toTitleCase(input.next());

inheritance

• Constructors are inherited, but use super()

public class Parent { public Parent() {
do some code; }
}
public class Child extends Parent {
public Child() {
super(); // call Parent() do some more code;
} }
so in a main method:
Child c = new Child(); // Calls Parent(), too

Default constructor == no parameters

第72页,子类能加新方法吗?

只有public方法的可以override,别的几个关键字都不行
 
exam1:
//yuec2 yue cheng
package exam1; //import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner; public class ScoreBoard {
String[] players;
int[][] playerScores;
Scanner input = new Scanner(System.in); //do not change this method
public static void main(String[] args) {
ScoreBoard scoreBoard = new ScoreBoard();
scoreBoard.readScores("GameScores.txt");
scoreBoard.showScores(scoreBoard.getMenuChoice());
} //do not change this method
int getMenuChoice() {
System.out.println("*** Score Board ***");
System.out.println("1. List all the scores of a player");
System.out.println("2. Find a player's average score");
System.out.println("3. Find all highest scores");
System.out.println("4. Exit");
int choice = input.nextInt();
input.nextLine();
return choice;
} void readScores(String filename) {
//write your code here
try {
int counts=0;
Scanner sc = new Scanner((new FileReader("GameScores.txt")));
while(sc.hasNextLine()) {
sc.nextLine();
counts++;}
players = new String[counts];
playerScores = new int[counts][];
sc = new Scanner((new FileReader("GameScores.txt")));
for(int i=0; i< counts; i++) {
String thisline= sc.nextLine();
players[i] = thisline.split(":")[0].trim();
String[] temp = thisline.split(":")[1].trim().split(",");
int size = temp.length;
playerScores[i] = new int[size];
for (int j = 0; j < size; j++) {
playerScores[i][j] = Integer.valueOf(temp[j].trim());
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} void showScores(int choice) {
//write your code here
if (choice == 1) {
String name = input.nextLine();
findPlayerScores(name);
}else if (choice == 2) {
String name = input.nextLine();
findPlayerAverageScore(name);
}else if (choice == 3) {
findAllHighestScores();
}else if (choice == 4) {
System.out.println("Good bye!");
}
return ;
} int[] findPlayerScores(String name) {
//write your code here
int index = -1;
for (int i = 0; i < players.length; i++) {
//System.out.println("players[i] = " + players[i]);
if (players[i].toLowerCase().equals(name.toLowerCase())) index = i;
}
//corner case
if (index == -1) return null;
//System.out.println("index = " + index);
//System.out.println(players[index] +"'s scores\n");
for (int j = 0; j < playerScores[index].length; j++) {
System.out.println(playerScores[index][j]);
}
return playerScores[index];
} float findPlayerAverageScore(String name) {
//write your code here
int[] scores = findPlayerScores(name);
float sum = 0;
for(int i = 0; i < scores.length; i++) {
sum += scores[i];
}
System.out.printf("%s's average score is %.2f", name, sum / scores.length);
return sum / scores.length;
} int[] findAllHighestScores() {
//write your code here
int[] highestScores = new int[players.length];
int max = Integer.MIN_VALUE;
for (int i = 0; i < players.length; i++) {
int size = playerScores[i].length;
for (int j = 0; j < size; j++) {
max = Math.max(max, playerScores[i][j]);
//System.out.println("max = " + max);
}
highestScores[i] = max;
max = Integer.MIN_VALUE;
System.out.println(highestScores[i]);
}
return highestScores;
//return null;
}
}

//里面的参数竟然是FileReader

Scanner sc = new Scanner((new FileReader("GameScores.txt")));

/就改个这里就行了 .toLowerCase()

System.out.println //自动竖行分隔

 

//不能这样用,因为里面有打印,要再写一遍

//int[] scores = findPlayerScores(name);

System.out.printf("%s's average score is %.2f", name, sum / scores.length);

//打印和返回分开?不应该啊

return (float)sum / scores.length;

for (int i = 0; i < players.length; i++) {

//max的定义必须在循环里面啊

exam2

Caesar

//yuec2 Yue Cheng
package exam2; public class Caesar extends Message{ Caesar(String text, String key) {
super(text, key);
// TODO Auto-generated constructor stub
} @Override
public String encrypt() {
// TODO Auto-generated method stub
//handle the return case
int keyNumber = Integer.valueOf(key);
StringBuilder encryptedSb = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char charToEncrypt = text.charAt(i);
char encryptedChar = (char) (charToEncrypt + keyNumber);
if (encryptedChar > 'Z')
encryptedChar = (char) (encryptedChar + ('A' - 'Z' -1));
encryptedSb.append(encryptedChar);
}
return encryptedSb.toString();
} @Override
public String decrypt() {
// TODO Auto-generated method stub
int keyNumber = Integer.valueOf(key);
StringBuilder decryptedSb = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char charToDecrypt = text.charAt(i);
System.out.println("charToDecrypt = " + charToDecrypt);
char decryptedChar = (char) ((int)charToDecrypt - keyNumber);
//wrong
System.out.println("decryptedChar1 = " + decryptedChar);
if (decryptedChar > 'Z')
decryptedChar = (char) (decryptedChar + ('A' - 'Z' - 1)); decryptedSb.append(decryptedChar);
}
return decryptedSb.toString();
} @Override
boolean validateInput() {
// TODO Auto-generated method stub
text = text.toUpperCase();
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) < 'A' || text.charAt(i) > 'Z')
return false;
}
//text = text.toLowerCase();
//get all digist in key to numbers
//Integer number = Integer.valueOf(key);
for (int i = 0; i < key.length(); i++) {
int digit = Integer.valueOf(key.charAt(i));
if (digit < 0 || digit > 9) return false;
}
return true;
} }

Keyword

//yuec2 Yue Cheng
package exam2; public class Keyword extends Message{ Keyword(String text, String key) {
super(text, key);
// TODO Auto-generated constructor stub
} @Override
public String encrypt() {
// TODO Auto-generated method stub
char[] keyChars = key.toCharArray();
StringBuilder encryptedSb = new StringBuilder();
//handle the repeat case
//correct
//System.out.println("text.length()="+ text.length());
for (int i = 0; i < text.length(); i++) {
//if (i == keyChars.length - 1) i = 0;
char charToEncrypt = text.charAt(i);
//System.out.println("charToEncrypt="+ charToEncrypt);
char encryptedChar = (char) (charToEncrypt + (keyChars[i] % 'A' + 1));
if (encryptedChar > 'Z')
encryptedChar = (char) (encryptedChar + ('A' - 'Z' -1));
//System.out.println("encryptedChar="+ encryptedChar);
encryptedSb.append(encryptedChar);
}
return encryptedSb.toString();
} @Override
public String decrypt() {
// TODO Auto-generated method stub
char[] keyChars = key.toCharArray();
StringBuilder decryptedSb = new StringBuilder();
//handle the repeat case
for (int i = 0; i < text.length(); i++) {
//if (i == keyChars.length - 1) i = 0;
char charToDecrypt = text.charAt(i);
char decryptedChar = (char) (charToDecrypt - (keyChars[i] % 'A' + 1));
//wrong
System.out.println("decryptedChar1="+decryptedChar);
if (decryptedChar > 'Z')
decryptedChar = (char) (decryptedChar + ('A' - 'Z' -1));
System.out.println("decryptedChar2="+decryptedChar);
decryptedSb.append(decryptedChar);
}
System.out.println("decryptedSb.toString()="+decryptedSb.toString());
return decryptedSb.toString();
} @Override
boolean validateInput() {
// TODO Auto-generated method stub
text = text.toUpperCase();
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) < 'A' || text.charAt(i) > 'Z')
return false;
} key = key.toUpperCase();
for (int i = 0; i < key.length(); i++) {
if (key.charAt(i) < 'A' || key.charAt(i) > 'Z')
return false;
}
return true;
} }

//转格式要加到try catch中

int keyNumber;
try{
keyNumber = Integer.valueOf(key);
}catch(NumberFormatException ex){ // handle your exception
keyNumber = 0;
}

exam3:

关键字this 是用来指向当前对象或类实例的

抽象类和接口的对比

参数 抽象类 接口
默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现
实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器 抽象类可以有构造器 接口不能有构造器
与正常Java类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型
访问修饰符 抽象方法可以有publicprotecteddefault这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法 抽象方法可以有main方法并且我们可以运行它 接口没有main方法,因此我们不能运行它。
多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口
速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口中添加方法,那么你必须改变实现该接口的类。

什么时候使用抽象类和接口

  • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
  • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
  • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

EXAM3

//override the hashcode method

//按照name来对object进行哈希

public int hashCode(){

return Objects.hash(name);

}

//hash物体的equals必须这么写,只有比较的参数:name最重要

public boolean equals(Object o){

if (o == null) return false;

if (this == o) return true;// make sure they

//are not pointing to the same location

if (getClass() != o.getClass()) return false;

Member m  = (Member) o;

//compare by name

if(name.equals(m.name)) return true;

else return false;

}

//用this关键字代表当前object

String name = this.members[i];

//有点忘了还能这么写

Collections.sort(memberList);

//排序一开始就建好了

Collections.sort(memberList);

TreeMap<String, List<String>> MemberMap = new TreeMap<>();



java 期末考试复习的更多相关文章

  1. python期末考试复习

    期末考试复习 补修的python跟着大一一起学,考试肯定不会出难,于是就敲了一些代码,把他们放到博客上,来记录一下 代码都是一段一段的,且python代码不是很多,所以我都写到了一个文件里,作为练习 ...

  2. Java期末考试冲刺总结

    经过长达将近三个小时的冲刺,我感觉身心俱疲,但它无法掩盖我敲代码的欲望! 三个小时我只实现了公文流转系统的的部分功能. 我深刻的意识到建民老师说的这套关系之复杂,它真的是太复杂了!!!没有系统的梳理, ...

  3. Java期末考试编程题复习

    在程序中定义Person类,为该类编写如下字段.构造器.访问器.修改器和相应的其他方法.(20分) <1>在Person类中定义两个字段: 私有访问权限,类型为String的name字段: ...

  4. java期末考试

    水仙花数 package txt; public class shuixianhua { public static void main(String[] args) { // TODO Auto-g ...

  5. Java 期末考试

    一: 题目:打印出100-999之间所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.   例如:153是一个"水仙花 ...

  6. JAVA期末考试整理

    Technical problem: 0.read: Scanner input= new Scanner(System.in) random#: x=(int)(Math.random()*10) ...

  7. 期末考试复习c#时总结的抽象类与接口的一些区别

    抽象类: (1)抽象类中可以定义抽象方法,属性,变量 (2)抽象类的派生类必须实现所有的抽象方法.要求所有的派生非抽象类都要用override重写实现抽象方法. (3)抽象类可以存放抽象方法,属性,也 ...

  8. Java开发工程师(Web方向) - 03.数据库开发 - 期末考试

    期末考试 编程题 本编程题包含4个小题,覆盖知识点从基础的JDBC.连接池到MyBatis. 1(10分) 有一款在线教育产品“天天向上”主要实现了在手机上查看课程表的功能.该产品的后端系统有一张保存 ...

  9. 中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机

    期末考试编程题 返回   这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成 ...

随机推荐

  1. day45 jQuery

    在用js写代码时,会遇到一些问题: window.onload 事件有事件覆盖的问题,因此只能写一个事件. 代码容错性差. 浏览器兼容性问题. 书写很繁琐,代码量多. 代码很乱,各个页面到处都是. 动 ...

  2. vue-demo(初级)

    在使用WebStorm前把字符编码等等设置好! 使用WebStorm打开vue项目等待ide索引加载完成 注意要让WebStorm可以创建vue文件需要以下步骤: <template> & ...

  3. 关于缓冲的认识---Frame Buffer

    关于缓冲的认识---Frame Buffer 重点来了:

  4. 流媒体压力测试rtmp&hls(含推流和拉流)

    http://blog.csdn.net/sinat_34194127/article/details/50816045 [root@localhost ~]# yum install git unz ...

  5. CRM 模拟用户

    web api 模拟用户 转:https://blog.csdn.net/vic0228/article/details/80649615 var req = new XMLHttpRequest() ...

  6. shell脚本(二)

              shell脚本(二)——变量 一.定义:用来存放各种数据,编程语言组成部分 变量的命名规则: 变量名由数字 字母下划线组成 必须以字母或者下划线开头 不能使用shell里面的关键词 ...

  7. JavaWeb——tomcat manager 403 Access Denied .You are not authorized to view this page.

    403 Access Denied You are not authorized to view this page. If you have already configured the Manag ...

  8. Python有趣时刻,这些代码让你大呼"卧槽,怎么会这样"

    分享一个实用问题,用python读取Excel并保存字典,如何做? 下面是该同学问题截图和代码 image.png 代码截图是下面这样的 image.png 不知道大家第一眼看了这个代码,什么感受?我 ...

  9. ubuntu 16.04 安装中文语言包

    安装中文语言包 sudo apt-get install  language-pack-zh-han* 安装gnome包 sudo apt-get install   language-pack-gn ...

  10. 如何解决python 图表中文显示乱码问题(matlplotlib 包)

    目前搜到的是,下载一个字体到程序路径,设置成默认字体.  https://blog.csdn.net/irene_loong/article/details/68955485 #图表显示中文设置 im ...