7.1 设计一个圆类,具有属性:圆心(点)、半径。添加一个方法:判断一个圆是否 包含一个点。
public class Circular {
private double pointX;
private double pointY;
private double r;
public boolean isContainPoint ( double x, double y) {
if ( Math. sqrt ( Math. pow ( x- pointX, 2 ) + Math. pow ( y- pointY, 2 ) ) > r)
return false ;
else return true ;
}
public Circular ( double pointX, double pointY, double r) {
this . pointX = pointX;
this . pointY = pointY;
this . r = r;
}
}
public void test53 ( ) {
boolean containPoint = new Circular ( 2 , 2 , 2 ) . isContainPoint ( 2 , 5 ) ;
if ( containPoint) {
System. out. println ( "在圆内" ) ;
} else
System. out. println ( "不在圆内" ) ;
}
7.2 设计一个点类,具有属性:x、y坐标,具有方法:和另外一个点相加,得到一个 新的点,新的点的x坐标是原来两个点的x坐标和,y是原来两个点的y坐标和
public class Point {
private int x;
private int y;
public Point ( int x, int y) {
this . x = x;
this . y = y;
}
public Point add ( Point p) {
return new Point ( p. x+ this . x, p. y+ this . y) ;
}
}
public void test54 ( ) {
Point point = new Point ( 2 , 2 ) ;
Point add = point. add ( new Point ( 3 , 3 ) ) ;
System. out. println ( add) ;
}
7.3 设计一个MyArrays工具类,模拟实现:
public class MyArrays {
public static void sort ( int [ ] arr, boolean asc) {
int len = arr. length;
quickSort ( arr, 0 , len- 1 ) ;
if ( ! asc) {
int temp;
for ( int i = 0 ; i < len/ 2 ; i++ ) {
temp = arr[ i] ;
arr[ i] = arr[ len- 1 - i] ;
arr[ len- i- 1 ] = temp;
}
}
}
private static void quickSort ( int [ ] arr, int low, int high) {
if ( low< high) {
int index = getIndex ( arr, low, high) ;
quickSort ( arr, low, index- 1 ) ;
quickSort ( arr, index+ 1 , high) ;
}
}
private static int getIndex ( int [ ] arr, int low, int high) {
int temp = arr[ low] ;
while ( low< high) {
while ( low < high && arr[ high] >= temp)
high-- ;
arr[ low] = arr[ high] ;
while ( low < high && arr[ low] <= temp)
low++ ;
arr[ high] = arr[ low] ;
}
arr[ low] = temp;
return low;
}
}
7.4 (易)定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的 实例时 把以上三个信息都作为构造函数的参数输入 其中用户ID和用户密码时必须的 缺省 的email地址是用户ID加上字符串"@qf.com"
public class NetworkUser {
private Long id;
private String username;
private String email;
public NetworkUser ( Long id, String username) {
this . id = id;
this . username = username;
this . email = id+ "@qf.com" ;
}
public NetworkUser ( Long id, String username, String email) {
this . id = id;
this . username = username;
this . email = email;
}
@Override
public String toString ( ) {
return "NetworkUser{" +
"id=" + id +
", username='" + username + '\'' +
", email='" + email + '\'' +
'}' ;
}
}
7.5 小明交换牌:小明左手和右手分别拿了一张扑克牌,需要交换两只手中的扑 克牌。最后小明展示交换后的扑克牌。扑克牌有花色和点数属性。
public class Poker {
PokerType type;
PokerNum num;
public Poker() {
}
public PokerType getType() {
return type;
}
public void setType(PokerType type) {
this.type = type;
}
public Poker(PokerType type, PokerNum num) {
this.type = type;
this.num = num;
}
public PokerNum getNum() {
return num;
}
public void setNum(PokerNum num) {
this.num = num;
}
public static void swap(Poker p1, Poker p2){
Poker poker = new Poker();
poker.num = p1.num;
poker.type = p1.type;
p1.num = p2.num;
p1.type = p2.type;
p2.num = poker.num;
p2.type = poker.type;
}
@Override
public String toString() {
return "Poker{" +
"type=" + type.getType() +
", num=" + num.getPokerStr() +
'}';
}
}
public enum PokerNum {
PA(1,"A"),
p2(2,"2"),
p3(3,"3"),
p4(4,"4"),
p5(5,"5"),
p6(6,"6"),
p7(7,"7"),
p8(8,"8"),
p9(9,"9"),
p10(10,"10"),
pJ(11,"J"),
pQ(12,"Q"),
pK(13,"K"),
p小王(15,"小王"),
p大王(16,"大王");
private int index;
private String pokerStr;
PokerNum(int index,String pokerStr) {
this.index = index;
this.pokerStr = pokerStr;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getPokerStr() {
return pokerStr;
}
public void setPokerStr(String pokerStr) {
this.pokerStr = pokerStr;
}
}
public enum PokerType {
//♠♥♦♣
hei("♠",1),
hong("♥",2),
fang("♦",3),
mei("♣",4);
private String type;
private int typeIndex;
PokerType(String type,int typeIndex) {
this.type = type;
this.typeIndex = typeIndex;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getTypeIndex() {
return typeIndex;
}
public void setTypeIndex(int typeIndex) {
this.typeIndex = typeIndex;
}
}
public void test57(){
Poker p1 = new Poker(PokerType.hong,PokerNum.PA);
Poker p2 = new Poker(PokerType.hei, PokerNum.pK);
System.out.println("交换前");
System.out.println(p1);
System.out.println(p2);
Poker.swap(p1,p2);
System.out.println("交换后");
System.out.println(p1);
System.out.println(p2);
}
7.6 定义一个类,该类有一个私有成员变量,通过构造方法将其进行赋初值并提供该成员的 getXXX()和setXXX()方法 提示:假设有 private String name;
public class User {
private String name;
public User ( String name) {
this . name = name;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
}
public void test59 ( ) {
User user = new User ( "千锋" ) ;
System. out. println ( user. getName ( ) ) ;
user. setName ( "大数据" ) ;
System. out. println ( user. getName ( ) ) ;
}
7.7 已知一个书签(BookMark)具有属性:页码和备注。根据以下代码段,完成类的设计。
public class BookMark {
private int index;
private String mark;
public BookMark ( int index, String mark) {
this . index = index;
this . mark = mark;
}
public int getIndex ( ) {
return index;
}
public void setIndex ( int index) {
this . index = index;
}
public String getMark ( ) {
return mark;
}
public void setMark ( String mark) {
this . mark = mark;
}
@Override
public String toString ( ) {
return "BookMark{" +
"index=" + index +
", mark='" + mark + '\'' +
'}' ;
}
}
7.8 在一个数组中,存储了5个书签(BookMark,直接使用上一题的类即可)。输出所有的 页码范围在 [20, 50] 范围内的书签,输出格式如下
public void test60 ( ) {
BookMark[ ] bookMarks = { new BookMark ( 2 , "第2页的备注" )
, new BookMark ( 29 , "第29页的备注" )
, new BookMark ( 40 , "第40页的备注" )
, new BookMark ( 50 , "第50页的备注" )
, new BookMark ( 60 , "第60页的备注" ) } ;
for ( BookMark bookMark : bookMarks) {
if ( bookMark. getIndex ( ) >= 20 && bookMark. getIndex ( ) <= 50 ) {
System. out. println ( bookMark) ;
}
}
}