关闭

慕课网3 异常处理 字符串 Math类 Calendar类 data simpleDateFormat类 包装类

284人阅读 评论(0) 收藏 举报
分类:

1.异常与异常处理

1-1   异常简介

                                                 Throwable

 

                          Error                                    exception

 


     虚拟机错误,线程死锁                       runtimeException(非检查异常)                   检查异常

 

                                                       空指针  数组下标越界  算术   类型转换              文件SQL


1-2 使用try ..catch …finally实现异常处理

Try{

}catch(Exception e){

}catch(Exception w){  //不同类型异常,先子后父

}finally{
//最终必须执行的一些代码块

}

…..

如果前面没有return ,则继续执行后面代码

注:try语句不可以独立存在,必须与catch或finally同存

1-5 异常抛出以及自定义异常

1.      class 自定义异常类extends 异常类型

2.      关键字 throw -----将产生的异常抛出(动作)

       throws------声明要抛出何种类型的异常(声明)

Public void 方法名(参数列表) throws 异常列表{
     //throw new Exception();

例如: public void divide(int one,int two) throws exception{
         if(two==0)

                    Throw new exception();  //抛出异常

}

Public void compute{     //捕获处理
             try{

Divide(5,0);

}catch(Exception e){

    System.out.println(e.message);

}

}

或者   将异常类型抛出向上进行处理

Public void compute throws Exception{

     Divide(5,0);

}

3.      printstackTrace()打印输出,但尽量去处理

4.      尽量添加finally释放占用的资源

 

2.字符串

2-1 字符串的不变性

String对象创建后不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同

2-3String类的常用方法

 

Int length()

Int indexOf(char ch)

Int indexOf(String str)

Int lastIndexOf(char ch)

Int lastIndexOf(String str)

String substring(int beginIndex)

String substring(int beginIndex,int endIndex)

String trim()  //返回去除前后空格的字符串

Boolean equals(Object obj)

String toUpperCase()

String toLowerCase()

Char charAt(int index)

String[] split(String regex,int limit)  // separator 
可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。limit
可选项。该值用来限制返回数组中的元素个数。

Byte[] bytes //将该字符串转换为byte数组

 

2-5 StringBuilder类

String 不变存储

StringBuilder  线程不安全 ,性能略好

StringBuffer 线程安全

1.      StringBuilder sb=newStringBuilder(“hello”,25)  ;//可以扩大最大到25个空白

//sb.capacity=25;

2.      sb.Append(“what a day”);

3.      sb.Inset(6,”beauty”);  //插入到第六个位置

4.      sb.Remove(5,7);     //从指定位置的指定数量删除

5.      sb.Repalce(‘!’,”?”);   //查找所有的’!’,并用’?’替换

6.      String toString() ;  //将StringBuilder对象转换成String对象

 

3常用类

3-1  包装类

基本数据类型

对应的包装类型

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Char

boolean

Boolean

 

Interger

构造方法: Interger(int value) ;   //Integer i1=new Integer(8); 

                 Integer(String s) ;    //Integer s2=new Integer(“8”);

常用方法:

          bytebyteValue();    //Integer->byte类型

           double  doubleValue(); //doubles3=i1.doubleValue();

         floatfloatValue();

         intintValue();

         longlongValue();

        staticint parseInt(String s); //int a=Integer.parseInt(“ff”,16);

        StringtoString();

        staticInteger valueOf(String s);

3-2 基本类型和包装类之间的转换

1.装箱:基本类型->包装类

       int I;

              Integer x=new Integer(i);  //手动装箱

             Integer y=I;  //自动装箱

2.拆箱:包装类对象->基本类型的值

        Integerj=new Integer(8);

          int m=j.intValue();  //手动拆箱

        intn=j; //自动拆箱为int类型

3-4 基本类型和字符串之间的转换

1.将基本类型->字符串

   int c=10;

    String s1=Integer.toString(c);

    String s2=String.valueOf(c);

    String s3=""+c;

2.指定字符串->基本类型

   String str="8";

    int d=Integer.valueOf(str);

    int e=Integer.parseInt(str);

3-6 使用data和simpleDateFormat类表示时间

1.使用Format()方式  日期->文本

       Date d=new Date();

       SimpleDateFormatsdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

       Stringtoday=sdf.format(d);    //2015-12-01 21:34:03

       System.out.println(today);     

2.使用parse()方法  文本->日期

   String day="2014021410:3:25";

    SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd HH:mm:ss");

    Date date=df.parse(day);

    System.out.print(date);    //Fri Feb14 10:03:25 CST 2014  

使用Date类需要导入java.util包,使用SimpleDateFormat需要导入java.text包

使用Date类需要导入java.util包,使用simpleDateFormat需要导入java.text包

3-7  Calendar类的应用

    1.  Calendar c=Calendar.getInstance();

       int year=c.get(Calendar.YEAR);

       int month=c.get(Calendar.MONTH);//0表示1月份,故加1

       int day=c.get(Calendar.DAY_OF_MONTH);

       int hour=c.get(Calendar.HOUR_OF_DAY);

       int minute=c.get(Calendar.MINUTE);

       int second=c.get(Calendar.SECOND);

       System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second); //2015-11-216:54:59

      

    2.  Date date=c.getTime();

       Long time=c.getTimeInMillis();    

System.out.println(time); //1449046499171

3-8 使用Math类操作数据

java.lang 所有方法都是静态方法  ,Math.函数名()

       double a=11.9;

       long l=Math.round(a);   //四舍五入 12

       doubled=Math.floor(a); //返回小于参数的最大整数 11.0

       doubled2=Math.ceil(a); //返回大于参数的最大整数 12.0

       double r=Math.random();//返回[0,1]之间的随机浮点数



项目实战  手牌游戏 CardGame


1.Card

package comimooc;

public class Card implements Comparable<Card>{
	String id;
	String type;
	Integer index;
	public Card(){
		
	}
	public Card(int index,String type,String id){
		this.index=index;
		this.id=id;
		this.type=type;
	}
	
	@Override
	public int compareTo(Card o) {
		// TODO Auto-generated method stub
		
		return this.index.compareTo(o.index);
	}
}

2.Player

package comimooc;

import java.util.ArrayList;
import java.util.List;

public class Player {
	public int id;
	public String name;
	List<Card> cards;
	Player( int id,String name){
		this.id=id;
		this.name=name;
		this.cards=new ArrayList<Card>();
	}

}

3.Game

package comimooc;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

public class Game {
	List<Card> cards;
	Map<Integer,Player> players;
	Set<Integer> keySet;
	Scanner input;
	public Game(){
		this.cards=new ArrayList<Card>();		
		this.players=new HashMap<Integer,Player>();
		this.keySet=players.keySet();
		this.input=new Scanner(System.in);
	}
	
	public void addCard(){
		System.out.println("-------创建扑克牌-------");
		String[] types={"方片","梅花","黑桃","红桃"};
		for(int i=0;i<4;i++){
			for(int j=0;j<13;j++){
				cards.add(new Card(i*13+j,types[i],Integer.toString(j)));
			}
		}
		System.out.print("-------扑克牌创建成功-------\n为:[");
		for(Card card:cards){
			System.out.print(card.type+card.id+", ");
		}
	}
	
	public void  shuffleCard(){
		System.out.println("\n-------开始洗牌-------");
		Collections.shuffle(cards);		
		System.out.println("-------洗牌结束-------");
	}
	
	public void createPlayer(){
		System.out.println("-------创建玩家-------");		
		for(int i=0;i<2;){
			System.out.println("-------请输入第"+(i+1)+"位玩家的ID和姓名-------");
			System.out.println("-------输入ID-------");
			Integer id=input.nextInt();
			if(players.containsKey(id)==true){
				System.out.println("-------ID已存在,请重新输入-------");
				continue;
			}else{
				System.out.println("-------输入姓名-------");
				String name=input.next();
				players.put(id, new Player(id,name));
				i++;
			}
		}
		Set<Integer> keySet=players.keySet();
		for(Integer id:keySet){
			System.out.println("-----欢迎玩家: "+players.get(id).name);	
		}	
	}
	
	public void dealCards(){
		System.out.println("-------开始发牌-------");
		Random random=new Random();
		
		Integer[] cardIndex = new Integer[2];
		for(int i=0;i<2;i++){
			boolean flag=true;
			for(int j=0;j<2;){
				cardIndex[j]=random.nextInt(cards.size());			
				for(Integer id:keySet){
					if(players.get(id).cards.contains(cards.get(cardIndex[j]))){
						flag=false;
						break;
					}
				}
				if(flag==true)
					j++;
			}
			for(Integer id:keySet){
					players.get(id).cards.add(cards.get(cardIndex[id-1]));
					System.out.println("----玩家: "+players.get(id).name+"-拿牌");	
			}
		}
		System.out.println("-------发牌结束-------");
	}
	
	public void playGame(){
		Set<Integer> keySet=players.keySet();
		Card[] cardsMax=new Card[2];
		for(Integer id:keySet){
			Collections.sort(players.get(id).cards);
			System.out.println("玩家"+players.get(id).name+"最大的手牌为:  "+players.get(id).cards.get(0).type+players.get(id).cards.get(0).id);
			cardsMax[id-1]=players.get(id).cards.get(0);
		}
		
		if(cardsMax[0].index > cardsMax[1].index){
			System.out.println(players.get(1).name+"赢了");
		}else{
			System.out.println(players.get(2).name+"赢了");
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Game game=new Game();
		game.addCard();
		game.shuffleCard();
		game.createPlayer();
		game.dealCards();
		game.playGame();
	}

}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:66499次
    • 积分:2411
    • 等级:
    • 排名:第16324名
    • 原创:172篇
    • 转载:62篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论