1 /** 2 * 需求: 3 * 编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表) 4 * 例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文 5 首先要了解中文字符有多种编码及各种编码的特征。假设n为要截取的字节数。 6 */ 7 class MyTest 8 { 9 public static void main(String[] args) throws Exception 10 { 11 String str = "HM程序员"; 12 int num = trimGBK(str.getBytes("GBK"),4); 13 System.out.println(str.substring(0,num)); 14 } 15 public static int trimGBK(byte[] buf,int n) 16 { 17 int num = 0; 18 boolean FirstHalf = false; 19 for (int i=0; i<n; i++) 20 { 21 if(buf[i]<0 && !FirstHalf) 22 { 23 FirstHalf = true; 24 }else 25 { 26 num++; 27 FirstHalf = false; 28 } 29 } 30 return num; 31 } 32 }
1 /** 2 * 需求: 3 * 定义一个交通灯枚举,包括红灯、绿灯、黄灯,需要有获得下一个灯的方法; 4 * 例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯 5 */ 6 public emun Lamp 7 { 8 RED("GREEN"),GREEN("YELLOW"),YELLOW("RED"); 9 private String next; 10 private Lamp(String next) 11 { 12 this.next = next; 13 } 14 public Lamp nextLamp() 15 { 16 return Lamp.valueOf(next); 17 } 18 }
1 /** 2 * 需求: 3 * ArrayList list = new ArrayList(); 4 * 在这个泛型为Integer的ArrayList中存放一个String类型的对象。 5 */ 6 import java.util.*; 7 import java.lang.*; 8 import java.lang.reflect.Method; 9 public class MyTest 10 { 11 public static void main(String[] args) throws Exception 12 { 13 ArrayList<Integer> list = new ArrayList<Integer>(); 14 Method method = list.getClass().getMethod("add",Object.class); 15 method.invoke(list,"I am a String"); 16 System.out.println(list.toString()); 17 } 18 }
1 /** 2 * 需求: 3 * 一个ArrayList对象aList中存有若干个字符串元素, 4 * 现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,请用代码实现。 5 */ 6 import java.util.*; 7 public class MyTest 8 { 9 public static void main(String[] args) throws Exception 10 { 11 ArrayList<String> aList = new ArrayList<String>(); 12 aList.add("heima"); 13 aList.add("abc"); 14 aList.add("heima"); 15 aList.add("abc"); 16 aList.add("heima"); 17 aList.add("abc"); 18 System.out.println(aList.toString()); 19 Iterator<String> it = aList.iterator(); 20 while(it.hasNext()) 21 { 22 String str = it.next(); 23 if(str.equals("abc")) 24 { 25 it.remove(); 26 } 27 } 28 System.out.println(aList.toString()); 29 } 30 }
1 /** 2 * 需求: 3 * 编写一个类,增加一个实例方法用于打印一条字符串。 4 * 并使用反射手段创建该类的对象,并调用该对象中的方法。 5 */ 6 import java.util.*; 7 import java.lang.reflect.Method; 8 public class MyTest 9 { 10 public static void main(String[] args) throws Exception 11 { 12 Class<myClass> clazz = myClass.class; 13 Method method = clazz.getMethod("printStr",String.class); 14 method.invoke(clazz.newInstance(),"Hello heima"); 15 } 16 } 17 class myClass 18 { 19 public void printStr(String str) 20 { 21 System.out.println(str); 22 } 23 }
1 /** 2 * 需求: 3 * 定义一个文件输入流,调用read(byte[] b)方法 4 * 将exercise.txt文件中的所有内容打印出来(byte 数组的大小限制为5,不考虑中文编码问题)。 5 */ 6 import java.io.*; 7 public class MyTest 8 { 9 public static void main(String[] args) 10 { 11 FileInputStream fr = null; 12 try 13 { 14 fr = new FileInputStream("d:/exercise.txt"); 15 byte[] bt = new byte[5]; 16 int len = 0; 17 while((len = fr.read(bt))!=-1) 18 { 19 for (int i = 0; i<len;i++ ) 20 { 21 System.out.print((char)bt[i]); 22 } 23 } 24 } 25 catch (IOException e) 26 { 27 e.printStackTrace(); 28 }finally 29 { 30 if(fr!=null) 31 try 32 { 33 fr.close(); 34 } 35 catch (IOException e) 36 { 37 fr = null; 38 } 39 } 40 } 41 }
1 import java.io.BufferedReader; 2 import java.io.InputStreamReader; 3 /** 4 * 需求: 5 * 编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 6 * 然后打印出这个十进制整数对应的二进制形式。 7 * 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况, 8 * 并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。 9 * @param args 10 */ 11 12 public class Test09{ 13 public static void main (String args[]) throws Exception{ 14 15 BufferedReader bufr = 16 new BufferedReader( 17 new InputStreamReader(System.in));//定义输入流 18 System.out.println("请输入需要转换的字符串:"); 19 String line = bufr.readLine();//读取输入的字符串 20 try{ 21 int i = Integer.parseInt(line);//转换为整数 22 System.out.println(i+"对应的二进制字符串是:"+Integer.toBinaryString(i));//将十进制转换为二进制 23 }catch(Exception e){ 24 String regex = ".*\\D+.*";//用正则做一下判断 25 if(line.matches(regex)) { 26 System.out.println("含有非数字字符"); 27 } else { 28 System.out.println("数字太大"); 29 } 30 } 31 } 32 }