run_wind

导航

黑马程序员——黑马基础测试

------- android培训java培训、期待与您交流! ---------- 

 

package com.itheima;

import java.util.ArrayList;
import java.util.Iterator;

/**
需求:创建ArrayList对象,添加5个元素,使用Iterator遍历输出

思路:
		建立一个新的ArrayList集合对象
		添加5个元素
		用Iterator遍历输出
		@author run_wind
*/
class Test1 
{
	public static void main(String[] args) 
	{
		//实例化ArraryList对象,加泛型将运行时期出现的ClassCastException转移到编译时期。
		ArrayList<String> arr = new ArrayList<String>();

		//添加5个新元素
		arr.add("Hello");
		arr.add("Java");
		arr.add("Hello");
		arr.add("Heima");
		arr.add("future");
		
		//用迭代器,遍历输出
		for(Iterator<String> it =arr.iterator();it.hasNext(); )
		{
			System.out.println(it.next());
		}
	}
}


 

package com.itheima;

import java.util.Scanner;

/**
需求: 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
			键盘输入6,打印6秒;
			键盘输入60,打印1分;
			键盘输入66,打印1分6秒;
			键盘输入666,打印11分6秒;
			键盘输入3601,打印1小时1秒

思路:		写一个函数,功能为输入一个正整数,按照格式打印出来
			建立一个数组,分别对应天,时,分,秒
			换算
			按格式输出
		用Scanner扫描,输入的数并传递
		调用功能函数
		@author run_wind
*/

class Test2 
{
	public static void main(String[] args) 
	{
		Scanner in = new Scanner(System.in);
		while (true)
		{
			//输入一个数,并将输入信息的下一个标记扫描为一个 int
			System.out.print("请输入一个正整数:");
			int num = in.nextInt();
			printTime(num);
		}
	}
	//输入一个数,转换成对应的时间并打印
	public static void printTime(int num)
	{
		//数组arr[0],arr[1],arr[2],arr[3]分别对应天,时,分,秒
		int[]arr = new int[4];
		int pos = arr.length;
		while (num>0)
		{
			//如果分秒大于60分钟,则进1
			int tmp = num%60;
			arr[--pos] = tmp;
			num = num/60;

			//小时如果大于24小时,则进1
			if (arr[1]>=24)
			{
				arr[0] = arr[1]/24;
				arr[1] = arr[1]%24;
			}
		}
		
		//按格式输出数组
		for (int i=0; i<arr.length; i++)
		{
			//如果不等于0则进入循环选择打印
			if (arr[i]!=0)
			{
				switch (i)
				{
				case 0:System.out.print(arr[i] + " 天 "); break;  
				case 1:System.out.print(arr[i] + " 时 "); break; 
				case 2:System.out.print(arr[i] + " 分 "); break;  
				case 3:System.out.print(arr[i] + " 秒 "); break;  
				default:break;  
				}
			}
		}
		System.out.println();//换行
	}
}


 

package com.itheima;

/**
需求:什么情况下适合用UDP协议,什么情况下适合用TCP协议?

答:UDP 将数据及源和目的封装成数据包中
		不需要连接,速度快
		每个数据包的大小限制在64k内
		不安全,有可能丢失文件、
	当通信对速度有要求,同时可以允许一定的丢包率的情况下,采用UDP,像即时通信,在线视频

	TCP 建立连接,形成传输数据的通道
		可以在连接中进行大数据传输。
		通过三次握手完成连接,是可靠协议。
		因为必须建立连接,所以相对较慢。
	当通信对数据的准确性要求较高的时候就采用TCP,像收发电子邮件或者下载文件

	总结一句话:追求安全,对传输数据要求高的话就用TCP,否则UDP
	@author run_wind
*/

class Test3 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}


 

package com.itheima;

/**
需求:编程计算3乘8等于几,什么方法效率更高?

@author run_wind
*/

class Test4  
{
	public static void main(String[] args) 
	{
		//位移运算符是效率最高的计算方式
		System.out.println(3<<3);
	}
}


 

package com.itheima;

/**
需求:分析运行结果,说明原理。(没有分析结果不得分)

        class A 
		{
            void fun1()
			{
				System.out.println(fun2());
            }
            int fun2() 
			{
                return 123;
            }
        }
		public class B extends A 
		{
            int fun2() 
			{
				return 456;
            }
            public static void main(String args[]) 
			{
                 B b = new B();
                 b.fun1();
                 A a = b;
                 a.fun1();
            }
        }
        
        @author run_wind
*/

/*
B b = new B();   把B函数实例化b,B继承了A函数,子类中出现与父类一模一样的方法时,会出现覆盖操作,复写了其中重名的方法
b.fun1(); 		 fun1()执行调用重写后fun2(),返回456  打印456
A a = b; 		    运用了多态,类型提升:向上转型。父类的引用指向或者接收自己的子类对象,a和b指向对内存中的同一对象。
a.fun1(); 		    成员函数在多态调用时,编译看左边,运行看右边。 所以一样的,依旧打印456

结果:456
	456

*/
class Test5 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}


 

package com.itheima;

import java.util.Scanner;

/**
需求:声明类Person,包含2个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person。

思路:		声明Person类,声明name,age变量。
		定义函数sayHello(),功能调用时输出:我叫***,今年***岁了
		声明类Chinese继承Person。
		输入名字,年龄,扫描通过sayHello函数输出。
		
		@author run_wind
*/

class Person//声明一个Person类
{
	private String name;
	private int age;
	
	//设置set,get修改方法
	public void setName(String name)
	{
		this.name = name;
	}
	public void setAge(int age)
	{
		this.age = age;
	}
	public String getName()
	{
		return name;
	}
	public int getAge()
	{
		return age;
	}
	
	//定义sayHello函数,功能调用时输出:我叫***,今年***岁了
	public void sayHello(String name,int age)
	{
		this.name = name;
		this.age = age;
		System.out.println("我叫"+name+",今年"+age+"岁了。");
	}
}

class Chinese extends Person//声明一个Chinese类继承Person
{
}

class  Test6
{
	public static void main(String[] args) 
	{
		Person p = new Person();//实例化Person

		//输入姓名,年龄,通过sayHello()调用。
		Scanner in = new Scanner(System.in);//获取键盘输入的实例
		
		System.out.print("请输入姓名:");
		String name = in.nextLine();
		
		System.out.print("请输入年龄:");
		int age = in.nextInt();
		
		p.sayHello(name,age);
	}
}


 

package com.itheima;
/**
需求:用控制台程序倒着输出九九乘法表;输出结果按下图所示:

      1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81

      ……

      1*3=3   2*3=6   3*3=9

      1*2=2   2*2=4

      1*1=1
思路:分析图,是一个倒的乘法口诀表
	  大圈套小圈思想,可以用for循环嵌套来实现
	  设被乘数x,乘数y
	  横排x递增,y不变,一共y列
	  竖排x不变,y递减,一共9行不变
	  打印,tab分隔距离,打完一行要换行
	  @author run_wind
*/

class Test7
{
	public static void main(String[] args) 
	{
		for (int y=9; y>=1; y--)//竖排x不变,y递减,一共9行不变
		{
			for (int x=1; x<=y; x++)//横排x递增,y不变,一共y列
			{
				System.out.print(x+"*"+y+"="+x*y+"\t");// 打印,tab分隔距离
			}
			System.out.println();//换行
		}
	}
}


 

package com.itheima;
/**
需求:声明类Student,包含3个成员变量:name、age、score
		要求可以通过 new Student("张三", 22, 95) 的方式创建对象,并可以通过set和get方法访问成员变量
		
思路:  声明一个学生类,私有名字,年龄,分数。
	  创建一个Student(name,age,score)的构造函数,可以通过new Student("张三", 22, 95) 的方式创建对象
	  依次写出get set方法
	  因为私有,所以只能本类函数访问,所以声明一个打印的方法
	  主函数调用测试
	  @author run_wind
*/
class Student//声明一个学生类
{
	private String name;//名字
	private int age;//年龄
	private int score;//分数

	//构造构造函数
	Student(String name,int age,int score)
	{
		this.name = name;
		this.age = age;
		this.score = score;
	}

	//依次写出get set方法
	public void setName(String name)
	{
		this.name = name;
	}
	public void setAge(int age)
	{
		this.age = age;
	}
	public void setScore(int score)
	{
		this.score = score;
	}
	public String getName()
	{
		return name;
	}
	public int getAge()
	{
		return age;
	}
	public int getScore()
	{
		return score;
	}

	public void show()//因为私有,所以只能本类函数访问,所以声明一个打印的方法show()
	{
		System.out.println("   name:"+name+"   age:"+age+"   score:"+score);
	}
}

class Test8 
{
	public static void main(String[] args) 
	{
		Student stu = new Student("张三",25,76);//实例化一个Student对线,并初始化
		stu.show();//打印

		//修改名字,年龄,分数 测试
		stu.setName("李四");
		stu.setAge(26);
		stu.setScore(90);
		stu.show();//打印
	}
}


 

package com.itheima;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
需求:写一个正则表达式,可以匹配尾号5连的手机号。
		规则: 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。例如:18601088888、13912366666
	@author run_wind
*/

class Test9 
{
	public static void main(String args[]) throws IOException
	{
		// 定义一个缓冲区 
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         System.out.print("请输入电话号码:");
         String num = null;
        try 
		{
			// 读取输入的字符串
            num = br.readLine();
         } 
		 catch (IOException e) 
		{
            e.printStackTrace();
        }
        // 正则表达式规则
        String phone = "[1][3-5[8]]\\d{4}(\\d)\\1{4}";
     
        System.out.println(num.matches(phone));
    }
}


 

package com.itheima;

import java.io.IOException;
import java.util.Scanner;

/**
需求:编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)。
		例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文

思路:  输入一个字符串,和要截取的字数
		定义一个函数,函数功能:从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
		把字符串转成字节数组
		因为中文GBK是返回两个负数,所以从最后一个开始往前遍历
		定义一个计数器,遍历,如果便利到负数就+1。
		如果负数个数为单数,那么为半个中文,舍弃,返回-1之前的数,转换成字符串输出
		否则为一个中文,转换成字符串输出
		@author run_wind
*/

class Test10
{               
	public static void main(String[] args) throws IOException
	{
        
		Scanner in = new Scanner(System.in);//获取键盘输入的实例
		System.out.print("请输入字符串(直接回车默认HM程序员):");
		String string = in.nextLine();
		if (string.equals(""))
				string = "HM程序员";
		System.out.print("请输入截取的字节数:");
		int byte_num = in.nextInt();
		
        Test10 t10 = new Test10();
        System.out.println(t10.getString(string, byte_num));
     }
	
	//函数功能:从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
	public String getString(String str,int key) throws IOException
	{	
		byte[] buf = str.getBytes("gbk");//编码
		
		//因为中文GBK是返回两个负数,所以从最后一个开始往前遍历
		//如果负数个数为单数,那么为半个中文,舍弃,否则为一个中文,返回
		int count = 0;
		for(int x=key-1; x>=0; x--)
		{
			if(buf[x]<0)
				count++;
			else
				break;
		}
		
		if(count%2==0)//解码。如果为单数就是半个中文,要舍弃最后的数
			return new String(buf,0,key,"gbk");
		else
			return new String(buf,0,key-1,"gbk");
	}
}


 

------- android培训java培训、期待与您交流! ---------- 

 

posted on 2014-11-24 11:09  run_wind  阅读(218)  评论(0编辑  收藏  举报