zoukankan      html  css  js  c++  java
  • 入学测试题详解

    package com.itheima;  
      
    import java.util.Iterator;  
    import java.util.Map;  
    import java.util.Map.Entry;  
    import java.util.TreeMap;  
      
    public class Test1 {  
      
        /** 
         * 1、 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)... 
         */  
      
        public static void main(String[] args) {  
            String str = "abcdekka27qoq";  
            System.out.println(charCount(str));  
        }  
      
        public static String charCount(String str) {  
            char[] chs = str.toCharArray();//转换成数组  
            Map<Character, Integer> m = new TreeMap<Character, Integer>();//加入泛型,前一参数是字符类型,后一个参数是整型  
            int count = 0;  
            for (int x = 0; x < chs.length; x++) {  
                if (chs[x] >= 'a' && chs[x] <= 'z' || chs[x] >= 'A'  
                        && chs[x] <= 'Z') {  
                    Integer value = m.get(chs[x]);//得到key所对应的value  
                    System.out.print(chs[x]+",");//查看key的值  
                    System.out.println(value);//查看value的值  
                    if (value != null)  
                        count = value;  
                    count++;  
                    m.put(chs[x], count);  
                    count = 0;//清0  
                }  
            }  
            StringBuilder sb = new StringBuilder();//保存将从集合中迭代出来的字母和次数  
            //迭代map集合          
            Iterator<Entry<Character, Integer>> it = m.entrySet().iterator();  
            while (it.hasNext()) {  
                Map.Entry<Character, Integer> me = it.next();  
                //加到容器sb中  
                sb.append(me.getKey() + "(" + me.getValue() + ")");  
            }  
            return sb.toString();  
      
        }  
    } 
     1 package com.itheima;  
     2   
     3 public class Test2 {  
     4   
     5     /** 
     6      * 2、 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。 分析: 
     7      * 1.定义一个交通灯枚举 2.枚举中包含3个对象即RED、GREEN、YELLOW 
     8      * 3.定义抽象方法nextLamp(),类型为TrafficLamp 4.用匿名内部类的方式为3个对象实现抽象方法 5.构造方法私有化 
     9      *  
    10      * 11      */  
    12     public static void main(String[] args) {  
    13         TrafficLamp t = TrafficLamp.RED;  
    14         System.out.println(t.nextLamp());  
    15   
    16         TrafficLamp t1 = TrafficLamp.GREEN;  
    17         System.out.println(t1.nextLamp());  
    18   
    19         TrafficLamp t2 = TrafficLamp.YELLOW;  
    20         System.out.println(t2.nextLamp());  
    21     }  
    22 }  
    23   
    24 enum TrafficLamp {  
    25     RED {// 匿名内部类  
    26         public TrafficLamp nextLamp() {  
    27             return GREEN;  
    28         }  
    29     },  
    30     GREEN() {// 匿名内部类  
    31         public TrafficLamp nextLamp() {  
    32             return YELLOW;  
    33         }  
    34     },  
    35     YELLOW() {// 匿名内部类  
    36         public TrafficLamp nextLamp() {  
    37             return RED;  
    38         }  
    39     };  
    40     public abstract TrafficLamp nextLamp();// 带抽象方法的枚举  
    41   
    42     private TrafficLamp() {// 构造方法私有化,目的是不允许程序员自己创建该类的对象。  
    43   
    44     }  
    45 }  

     


     

     1 package com.itheima;  
     2   
     3 public class Test3 {  
     4   
     5     /** 
     6      * 3、 方法中的内部类能不能访问方法中的局部变量,为什么?  
     7      * 答: 方法中的内部类可以访问方法中的局部变量,但是该局部变量必须用final关键字修饰。 
     8      * 因为方法中的代码是由上而下顺序执行的,方法运行结束后,局部变量就被销毁, 
     9      * 内部类的生命周期可能会比局部变量的生命周期长;用final修饰符修饰局部变量后, 
    10      * 局部变量的生命周期会延长,其不会因为语句块的结束而结束,还会长期存在。 
    11      * 所以方法中的内部类可以访问方法中的局部变量。 如下,示例代码所示。14      */  
    15     public static void main(String[] args) {  
    16         Outter o = new Outter();  
    17         o.getInner();  
    18     }  
    19 }  
    20   
    21 class Outter {  
    22     public void getInner() {  
    23         final int a = 3; // 定义局部变量  
    24         class Inner { // 定义内部类Inner  
    25             public void show() {  
    26                 System.out.println(a);  
    27             }  
    28         }  
    29         // 创建局部内部类对象  
    30         Inner inner = new Inner();  
    31         inner.show();  
    32     }  
    33   
    34 }  
    35  
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.itheima;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.BufferedWriter;  
    5. import java.io.FileWriter;  
    6. import java.io.IOException;  
    7. import java.io.InputStreamReader;  
    8. import java.util.Collections;  
    9. import java.util.Comparator;  
    10. import java.util.Set;  
    11. import java.util.TreeSet;  
    12.   
    13. public class Test4 {  
    14.   
    15.     /** 
    16.      * 4、 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息, 
    17.      * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序 
    18.      * 写入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观, 打开这个文件,就可以很清楚的看到学生的信息。 
    19.      *  
    20.      *
    21.      */  
    22.     public static void main(String[] args) throws IOException {  
    23.         // 自定义强制反转的比较器  
    24.         Comparator<Student> cmp = Collections.reverseOrder();  
    25.         //以下把比较器作为参数传递  
    26.         Set<Student> stus = StudentInfoTool.getStudents(cmp);  
    27.         StudentInfoTool.writeToFile(stus);  
    28.     }  
    29. }  
    30.   
    31. class Student implements Comparable<Student> {  
    32.     private String name;  
    33.     private int ma, cn, en;  
    34.     private int sum;  
    35.   
    36.     Student(String name, int ma, int cn, int en) {  
    37.         this.name = name;  
    38.         this.ma = ma;  
    39.         this.cn = cn;  
    40.         this.en = en;  
    41.         sum = ma + cn + en;  
    42.     }  
    43.   
    44.     public String getName() {  
    45.         return name;  
    46.     }  
    47.   
    48.     public int getSum() {  
    49.         return sum;  
    50.     }  
    51.   
    52.     public int hashCode()// 重写方法  
    53.     {  
    54.         return name.hashCode() + sum * 56;// 56是随便乘的  
    55.     }  
    56.   
    57.     public boolean equals(Object obj)// 重写方法  
    58.     {  
    59.         if (!(obj instanceof Student))  
    60.             throw new ClassCastException("不是学生类!");  
    61.         Student s = (Student) obj;  
    62.         return this.name.equals(s.name) && this.sum == s.sum;  
    63.     }  
    64.   
    65.     // 实现接口中的方法,分数相同再比较姓名。如果总分和姓名都相同,就是同一个人。  
    66.     public int compareTo(Student s) {  
    67.         int num = new Integer(this.sum).compareTo(new Integer(s.sum));  
    68.         if (num == 0)  
    69.             return this.name.compareTo(s.name);  
    70.         return num;  
    71.     }  
    72.   
    73.     public String toString() {  
    74.         return "student["+name+", "+ma+", "+cn+", "+en+"]";  
    75.     }  
    76. }  
    77.   
    78. class StudentInfoTool {  
    79.   
    80.     public static Set<Student> getStudents() throws IOException// 不论带不带比较器,调用的都是带比较器的方法  
    81.     {  
    82.         return getStudents(null);// 不带比较器的比较  
    83.     }  
    84.   
    85.     public static Set<Student> getStudents(Comparator<Student> cmp)  
    86.             throws IOException// 带自定义比较器的比较  
    87.     {  
    88.         BufferedReader bufr = new BufferedReader(new InputStreamReader(  
    89.                 System.in));  
    90.         String line = null;  
    91.         Set<Student> stus = null;  
    92.         if (cmp == null)// 不论带不带比较器,调用的都是掉比较器的方法  
    93.             stus = new TreeSet<Student>();// treeset内部已经按默认自然排序,排好序啦!!!  
    94.         else  
    95.             stus = new TreeSet<Student>(cmp);  
    96.         while ((line = bufr.readLine()) != null) {  
    97.             if ("over".equals(line))// 输入over就结束  
    98.                 break;  
    99.             String[] info = line.split(",");// 以逗号分隔输入的信息  
    100.             Student stu = new Student(info[0], Integer.parseInt(info[1]),  
    101.                     Integer.parseInt(info[2]), Integer.parseInt(info[3]));// 字符串要转换为整形  
    102.             stus.add(stu);  
    103.         }  
    104.         bufr.close();  
    105.         return stus;  
    106.     }  
    107.   
    108.     public static void writeToFile(Set<Student> stus) throws IOException {  
    109.   
    110.         BufferedWriter bufw = new BufferedWriter(new FileWriter("stuinfo.txt"));  
    111.   
    112.         for(Student stu : stus)  
    113.         {  
    114.             bufw.write(stu.toString()+" ");  
    115.             bufw.write(stu.getSum()+"");//要转换成字符串  
    116.             bufw.newLine();  
    117.             bufw.flush();  
    118.         }  
    119.   
    120.         bufw.close();  
    121.     }  
    122. }  
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.itheima;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.Collections;  
    5. import java.util.List;  
    6.   
    7. public class Test5 {  
    8.   
    9.     /** 
    10.      * 5、 编写程序,生成5个1至10之间的随机整数,存入一个List集合, 
    11.      * 编写方法对List集合进行排序(自定义排序算法,禁用Collections.sort方法和TreeSet),  
    12.      * 然后遍历集合输出。 
    13.      *  
    14.      * 
    15.      */  
    16.   
    17.     public static void main(String[] args) throws InterruptedException {  
    18.         int[] number = new int[5];// 定义一个int数组长度为5  
    19.         List<Integer> list = new ArrayList<Integer>();// 定义一个int数组长度为5  
    20.         for (int i = 0; i < 5; i++) {  
    21.             number[i] = (int) (Math.random() * 10 + 1);// 返回1~10之间的随机整数给number[i]  
    22.             for (int j = 0; j < i; j++) {  
    23.                 if (number[i] == number[j]) {// 与之前的数对比,防止重复  
    24.                     i--;  
    25.                     break;  
    26.                 }  
    27.             }  
    28.         }  
    29.         System.out.println("将随机数添加到list集合中");  
    30.         for (int n : number) {  
    31.             Thread.sleep(100);// 为了打印好看些  
    32.             list.add(n);  
    33.             System.out.print(n + " ");  
    34.         }  
    35.         System.out.println(" 5个1至10的随机数从小到大排序如下:");  
    36.         Collections.sort(list);// 按升序排序  
    37.         // 冒泡排序  
    38.         for (int i = 0; i < list.size() - 1; i++) {  
    39.             for (int j = 1; j < list.size() - i; j++) {  
    40.                 if ((list.get(j - 1)).compareTo(list.get(j)) > 0) { // 比较两个整数的大小  
    41.                     int temp = list.get(j - 1); // 如果J-1大于J的交换位置  
    42.                     list.set((j - 1), list.get(j));  
    43.                     list.set(j, temp);  
    44.                 }  
    45.             }  
    46.         }  
    47.         // 遍历输出  
    48.         for (int n : list) {  
    49.             Thread.sleep(100);// 为了打印好看些  
    50.             System.out.print(n + " ");  
    51.         }  
    52.     }  
    53. }  
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.itheima;  
    2.   
    3. public class Test6 {  
    4.   
    5.     /** 
    6.      * 6、 编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。 
    7.      * 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。 
    8.      *  
    9.      * 
    10.      */  
    11.     public static void main(String[] args) {  
    12.         Test6 t = new Test6();  
    13.         t.new Ticket();  
    14.   
    15.     }  
    16.   
    17.     class Ticket {  
    18.         public Ticket() {  
    19.             TicketSealCenter tsc = new TicketSealCenter(100);// 定义有100张票  
    20.             for (int i = 0; i < 5; i++) {// 定义有5个窗口  
    21.                 new Thread(new SealWindow(i, tsc)).start();// 启动售票窗口售票  
    22.             }  
    23.         }  
    24.     }  
    25.   
    26.     /** 
    27.      * 售票中心类 定义了票的总数,同步售票方法 
    28.      */  
    29.     class TicketSealCenter {  
    30.         int ticketNum = 50;  
    31.         boolean flag = false; // 定义票是否卖完  
    32.   
    33.         public TicketSealCenter(int num) {// 定义一个改变票数的方法  
    34.             this.ticketNum = num;  
    35.         }  
    36.   
    37.         public synchronized void sellTicket(SealWindow s) {  
    38.             if (ticketNum > 0) {//票数如果大于0  
    39.                 int n = s.num + 1;//n表示第几号窗口  
    40.                 System.out  
    41.                         .println("第--" + n + "--售票窗口卖出了第" + ticketNum + "张票!");  
    42.                 ticketNum--;//卖出一张票后减1  
    43.             } else {  
    44.                 flag = true;  
    45.             }  
    46.         }  
    47.     }  
    48.   
    49.     /** 
    50.      * 售票窗口类 
    51.      */  
    52.     class SealWindow implements Runnable {  
    53.         int num;//num表示第几号窗口-1,即i  
    54.         TicketSealCenter tsc;  
    55.   
    56.         public SealWindow(int num, TicketSealCenter tsc) {  
    57.             this.num = num;  
    58.             this.tsc = tsc;  
    59.         }  
    60.   
    61.         public final void run() {  
    62.             while (!tsc.flag) {  
    63.                 tsc.sellTicket(this); // 调用售票中心类的同步票数  
    64.                 try {  
    65.                     Thread.sleep(100);  
    66.                 } catch (InterruptedException e) {  
    67.                     e.printStackTrace();  
    68.                 }  
    69.             }  
    70.         }  
    71.     }  
    72. }  
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.itheima;  
    2.   
    3. public class Test7 {  
    4.   
    5.     /** 
    6.      * 7、 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常, 
    7.      * 在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。 在客户端有一个类为TestC,有一个方法为c 
    8.      * ,请在这个方法中捕捉异常的信息。 完成这个例子,请说出java中针对异常的处理机制。 
    9.      * 答:Java提供两种异常处理机制 
    10.      * (1)用try...catch语句捕获并且处理异常;    
    11.      * (2)使用throw抛出异常,异常必须是java.lang.Throwable类的对象或者该类的子类的对象;    
    12.      * (3)使用throws声明方法抛出异常;  
    13.      * (4)使用finally语句声明在任何情况下都会执行的代码。 
    14.      *如下,类A和类B都是跑出了异常,而类C捕获了异常。  
    15.      * @param 汤柳清 
    16.      */  
    17.     public static void main(String[] args) {  
    18.         ClassC.methodC();  
    19.   
    20.     }  
    21. }  
    22.   
    23. class ClassB {  
    24.     public static void methodB() throws Exception {  
    25.         System.out.println("This is methodB");  
    26.     }  
    27. }  
    28.   
    29. class ClassA {  
    30.     public static void methodA() throws Exception {  
    31.         ClassB.methodB();  
    32.     }  
    33. }  
    34.   
    35. class ClassC {  
    36.     public static void methodC() {  
    37.         try {  
    38.             ClassA.methodA();  
    39.         } catch (Exception e) {  
    40.             System.out.println(e.getMessage());  
    41.         }  
    42.     }  
    43. }  
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.itheima;  
    2.   
    3. import java.lang.reflect.Constructor;  
    4. import java.lang.reflect.Method;  
    5. /** 
    6.  * 1 
    7.  * 2 
    8.  * 3 
    9.  * @author Administrator 
    10.  * 
    11.  */  
    12. public class Test8 {  
    13.   
    14.     /** 
    15.      *8、 编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法。## 
    16.      * ##分析: 
    17.      * 1.加载类 
    18.      * 2.加载无参构造方法 
    19.      * 3.创建Demo对象 
    20.      * 4.获得自定义的实例方法 
    21.      * 5.调用showMessage方法 
    22.      * @author 汤柳清 
    23.      */  
    24.     @SuppressWarnings({ "rawtypes", "unchecked" })  
    25.     public static void main(String[] args) {  
    26.   
    27.         try {  
    28.             /** 加载类*/  
    29.             Class clazz = Class.forName("com.itheima.Demo");  
    30.             // 加载无参构造方法  
    31.             Constructor constructor = clazz.getConstructor();  
    32.             // 创建Demo对象  
    33.             Demo demo = (Demo) constructor.newInstance();  
    34.             // 获得自定义的实例方法  
    35.             Method method = clazz.getMethod("showMessage");  
    36.             // 调用该方法  
    37.             method.invoke(demo);  
    38.         } catch (Exception e) {  
    39.             // TODO Auto-generated catch block  
    40.             e.printStackTrace();  
    41.         }  
    42.   
    43.     }  
    44. }  


    package com.itheima;


    public class Demo {
    // 实例方法
    public void showMessage() {
    System.out.println("hello,heima! hello,teacher!");
    }


    }

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.itheima;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.IOException;  
    5. import java.io.InputStreamReader;  
    6.   
    7. public class Test9 {  
    8.   
    9.     /** 
    10.      * 9、 编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串 
    11.      * 不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大, 
    12.      * 还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2, 余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2, 
    13.      * 这次得到的余数就是次低位,如此循环,直到被除数为0为止。 其实,只要明白了打印出一个十进制数的每一位的方式 
    14.      * (不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。 
    15.      *  
    16.      * 
    17.      * @throws IOException 
    18.      */  
    19.     public static void main(String[] args) throws IOException {  
    20.         // TODO Auto-generated method stub  
    21.         BufferedReader bufr = new BufferedReader(new InputStreamReader(  
    22.                 System.in));  
    23.         String line = bufr.readLine();  
    24.         bufr.close();  
    25.   
    26.         ChangeToBinary(line);  
    27.     }  
    28.   
    29.     public static void ChangeToBinary(String arr) {  
    30.         char[] array = arr.toCharArray();  
    31.         StringBuilder sb = new StringBuilder();  
    32.         char[] number = new char[] { '0', '1', '2', '3', '4', '5', '6', '7',  
    33.                 '8', '9' };  
    34.         for (int i = 0; i < array.length; i++) {  
    35.             for (int j = 0; j < number.length; j++) {  
    36.   
    37.                 if (array[i] == number[j]) {  
    38.                     continue;  
    39.                 }  
    40.                 if (j >= number.length) {  
    41.                     break;  
    42.                 }  
    43.             }  
    44.         }  
    45.         double d = 0;  
    46.         try {  
    47.             d = Double.parseDouble(arr);  
    48.         } catch (Exception e) {  
    49.             throw new RuntimeException("包含有非数字字符");  
    50.         }  
    51.         if (d > Integer.MAX_VALUE) {  
    52.             System.out.println("数字太大");  
    53.         } else {  
    54.             int data = Integer.parseInt(arr);  
    55.   
    56.             while (data > 0) {// 转二进制数  
    57.   
    58.                 int b = data % 2;  
    59.   
    60.                 sb.append(b);  
    61.   
    62.                 data = data / 2;  
    63.   
    64.             }  
    65.         }  
    66.         System.out.println(sb.reverse());  
    67.     }  
    68. }  
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. package com.itheima;  
    2.   
    3. /** 
    4.  * 10:28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路) 
    5.  * 分析: 
    6.  * 定义一个变量代表瓶盖数,当瓶盖数没有到3的时候,就继续购买可乐,同时瓶盖数加1, 
    7.  * 当瓶盖数达到3,就把瓶盖数置为1,这次就不要购买可乐。 
    8.  * 循环28次,可以使28人都能喝到可乐。 
    9.  * 同理,50人喝可乐一样。 
    10.  * 
    11.  */  
    12. public class Test10 {  
    13.     public static void main(String[] args) {  
    14.         System.out.println("28人买可乐喝,需要买:" + BuyCokes(28) + "瓶");  
    15.         System.out.println("50人买可乐喝,需要买:" + BuyCokes(50) + "瓶");  
    16.   
    17.     }  
    18.   
    19.     // 购买可乐方法  
    20.     public static int BuyCokes(int num) {  
    21.         // 瓶盖数  
    22.         int bottle_cap = 0;  
    23.         // 需要购买总瓶数  
    24.         int sum = 0;  
    25.         for (int i = 0; i < num; i++) {  
    26.             if (bottle_cap != 3) {  
    27.                 // 购买一瓶  
    28.                 sum++;  
    29.                 // 同时瓶盖增加一个  
    30.                 bottle_cap++;  
    31.             } else if (bottle_cap == 3) {  
    32.                 bottle_cap = 1;// 瓶盖数置为1  
    33.             }  
    34.         }  
    35.         return sum;  
    36.     }  
    37.   
    38. }  


    java试题1:


    请在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,如果传入的数组为null,应抛出IllegalArgumentException异常。在类的main方法中以各种可能出现的情况测试验证该方法编写得是否正确,例如,字符不存在,字符存在,传入的数组为null等。 


    java试题2:


    编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,例如,根据内容为[1][2][3]的数组形成内容为"1,2,3"的字符串。 


    java试题3:


    编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。
    十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。 


    java试题4:


    请用移位的方式打印出一个十进制整数的十六进制形式。提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一(作为作业,要求每种方式都用到)计算出一个十六进制数值对应的十六进制形式: 
    1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A' 
    2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。 
    3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。 


    java试题5:


    请结合我们的《javascript网页开发》一书中介绍的正则表达式与String.split方法,从"http://www.it315.org/get.jsp?user=zxx&pass=123"这样的URL地址中提取出每个参数的名称和值。这里要注意在正则表达式中要对?进行转义处理. 


    java试题6:


    编写一个程序,用于实现文件的备份,程序运行时的命令语法为:
    java MyCopy <sourcefile> <destfile> 


    java试题7:


    请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。 


    java试题8:








    在javascript视频的第七讲的第一个片断,也就是网站上提供的免费片断《正则表达式的应用》中,讲到了将一个保存有ip地址与地区对照关系的文本文件导入到数据库时,应该将其中的某些空格替换成逗号(,),即对于如下格式的文本文件内容: 起始IP 结束IP 地区--------------------------------------------------------------- 61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧 61.54.231.246 61.54.231.246 河南省安阳市 未知地区 61.54.231.9 61.54.231.247 河南省安阳市 红日网吧 61.54.231.248 61.54.231.248 河南省安阳市 安阳师范学院 61.54.231.249 61.54.231.249 河南省安阳市 黑蜘蛛网吧(师范学院附近)应转换成下面的这种格式: 61.54.231.245,61.54.231.245,河南省安阳市 新世纪网吧 61.54.231.246,61.54.231.246,河南省安阳市 未知地区 61.54.231.247,61.54.231.247,河南省安阳市 红日网吧 61.54.231.248,61.54.231.248,河南省安阳市 安阳师范学院 61.54.231.249,61.54.231.249,河南省安阳市 黑蜘蛛网吧(师范学院附近)在视频教程中,讲解了使用UltraEdit的正则表达式替换功能来完成上面的转换。从jdk1.4开始,java语言中提供用于处理正则表达式的相关API类和方法,在jdk帮助文档中,查看String类的replaceAll方法,可以看到该方法就支持类似UltraEdit的正则表达式替换功能。任务:阅读String.replaceAll方法的帮助,以及它提供的相关超链接,了解该方法的用法后,编写一个java程序来自动实现上面的正则表达式替换,将a.txt(下载)替换后的结果保存到b.txt文件中。另外,我们在实现IT315网站的ip地区查询系统时,使用的是类似如下的sql语法:select 地区 from ip表 where 用户ip>起始IP and 用户ip<结束ip通过这条sql语句就可以查询出用户ip所对应的地区结果。由于用户ip与起始ip和结束ip的比较属于字符串比较,如果用户ip为9.1.1.1,那么它与61.54.231.245比较的结果就是前者大于后者,因为用户ip的第一个字符“9”大于61.54.231.245中的第一个字符“6”。现在请你想出一种解决办法,让上面的sql语句能够返回正确结果。提示:将9.1.1.1变化成009.001.001.001后与061.054.231.245进行比较就可以了。请按这种思路在你的程序中增加进行这种改变的正则表达式替换。注意,起始IP和结束IP的四个字段都有可能是1位、2位或3位数字,例如,61.5.23.1。在源程序中,要对程序代码的功能进行注释说明,提交你编写的程序给我们时,请附带该程序的使用说明。










































    编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,例如,根据内容为[1][2] [3]的数组形成内容为"1,2,3"的字符串。


    class  ConnectDemo
    {
     public static void main(String[] args) 
     {
      int[] array = new int[]{1,2,3,4,5,6,7,8,9};
      StringBuffer sb = new StringBuffer();
      for(int i=0;i<array.length;i++)
      {
       sb.append(array[i]);
       sb.append(",");
      }
      sb.deleteCharAt(sb.length()-1);
      System.out.println(sb);
     }
    }






    2、 请在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,如果传入的数组为null,应抛出IllegalArgumentException异常。在类的main方法中以各种可能出现的情况测试验证该方法编写得是否正确,例如,字符不存在,字符存在,传入的数组为null等。 


    class  SearchDemo
    {
     public static void main(String[] args) 
     {
      char[] array = new char[]{'a','b','c','d','e','f','7','$'};
      char[] array_null = null;
      Search s1 = new Search();
      s1.searchChar(array,'d');
      Search s2 = new Search();
      s2.searchChar(array,'8');
      Search s3 = new Search();
      s3.searchChar(array_null,'8');
     }
    }
    class Search
    {
     public void searchChar(char[] array,char ch)
     {
      if(array == null)
       throw new IllegalArgumentException("传入数组参数为空!");
      else
      {
       int i=0;
       while(i<array.length)
       { 
        if(ch != array[i])
         i++;
        else
        {
         System.out.println(i);
         break;
        }
       }
       if(i == array.length)
        System.out.println("-1");
      }
      
     }
    }






    3、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。


    import java.io.*;
    class StringToBinaryDemo 
    {
     public static void main(String[] args) 
     {
      BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
      int num = 0;
      try
      {
       String s = br.readLine();
       num = Integer.parseInt(s);
      }
      catch(NumberFormatException e)
      {
       System.out.println("传入字符串错误!");
      }
      catch(IOException e)
      {
       e.getMessage();
      }
      int array[] = new int[20];
      int i = 0;
      while(num!=0)
      {
       try
       {
        array[i]=num%2;
        num/=2;
        i++;
       }
       catch (ArrayIndexOutOfBoundsException e)
       {
        System.out.println("传入字符过大!");
        System.exit(-1);
       }
      }
      for(int j=i-1;j>=0;j--)
      System.out.print(array[j]+" ");
     }
    }






    4、请用移位的方式打印出一个十进制整数的十六进制形式。提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一(作为作业,要求每种方式都用到)计算出一个十六进制数值对应的十六进制形式: 


    (1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A' 


    (2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。 


    (3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。 


    class ToHex
    {
     public static void main(String[] args)
     {
      int num = 266;
      int temp = 0;
      int[] array = new int[8];
      System.out.println(num);
      for(int i = 0;i<8;i++)
      {
       temp = num & 15;
       num = num>>4;
       array[i] = temp;
      }
      System.out.println("第一种方法:"+first(array));
      System.out.println("第二种方法:"+second(array));
      System.out.println("第三种方法:"+third(array));
     }


     public static String first(int[] array)
     {
      String str = "";
      char ch = 0;
      char a = 0;
      for(int i = 0;i<8;i++)
      {
       if(array[i]<=9)
       {
        a= (char) ('0'+array[i]);
        str = a + str;
       }
       else
       {
        ch= (char) ((array[i]-10)+'a');
        str = ch + str;
       } 
      }
      return str;
     }


     public static String second(int[] array)
     {
      String str = "";
      char[] ch = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
      for(int i = 0;i<8;i++)
      {
       str = ch[array[i]]+ str;
      }
      return str;
     }


     public static String third(int[] array)
     {
      String str = "";
      for(int i = 0;i<8;i++)
     {
      str = Character.forDigit(array[i], 16) + str;
     }
      return str;
     }
    }








    5、 编写一个程序,用于实现文件的备份,程序运行时的命令语法为:java MyCopy (sourcefile) (destfile) 


    import java.io.*;
    import java.util.*;
    class CopyDemo
    {
     public static void main (String [] args)
     {  
       
      try
      {
       FileInputStream in = new FileInputStream(args[0]);
       FileOutputStream out = new FileOutputStream(args[1]);
       byte b[] = new byte[1024];
       int line = 0;
       while((line=in.read())!=-1)
       {
        out.write((byte)line);
       }
       in.close();
       out.close();
      }
      catch (IOException e)
      {
       e.getMessage();
      }
       
     }
    }






    6、  在javascript视频的第七讲的第一个片断,讲到了将一个保存有ip地址与地区对照关系的文本文件导入到数据库时,应该将其中的某些空格替换成逗号(,),即对于如下格式的文本文件内容:
            起始IP                   结束IP                      地区
            61.54.231.245         61.54.231.245          河南省安阳市 新世纪网吧
            61.54.231.246         61.54.231.246          河南省安阳市 未知地区
            61.54.231.9             61.54.231.247          河南省安阳市 红日网吧
            61.54.231.248          61.54.231.248          河南省安阳市 安阳师范
            61.54.231.249          61.54.231.249         河南省安阳市 黑蜘蛛网吧
    应转换成下面的这种格式:
            61.54.231.245,61.54.231.245 ,河南省安阳市 新世纪网吧
            61.54.231.246,61.54.231.246,河南省安阳市 未知地区
            61.54.231.9,61.54.231.247 ,河南省安阳市 红日网吧
            61.54.231.248,61.54.231.248,河南省安阳市 安阳师范学院
            61.54.231.249,61.54.231.249,河南省安阳市 黑蜘蛛网吧(师范学院附近)
    import java.io.*;
    class IPTransform 
    {
     public static void main(String[] args) throws IOException
     {
      BufferedReader br = new BufferedReader(new FileReader("D:\java\a\a.txt"));
      BufferedWriter bw = new BufferedWriter(new FileWriter("D:\java\a\b.txt"));
      String s = null;
      
      while((s=br.readLine())!=null)
      {
       String str = s.replaceAll("(?<=\d)\s+",",");
       String[] array = str.split(",");
       for(int i = 0;i<array.length-1;i++)
       {
        String[] sub_array = array[i].split("\.");
        String num ="";
        for(int j = 0;j<sub_array.length;j++)
        {
         String sub_str = "";


         if(sub_array[j].length() == 1)
         {
          sub_str = "00" + sub_array[j];
         }
         else if (sub_array[j].length() == 2)
         {
          sub_str = "0" + sub_array[j];
         }
         else
         {
          sub_str = sub_array[j];
         }
         
         if( 3 == j )
         {
          num = num + sub_str + ',';
         }
         else
         {
          num = num + sub_str + '.';
         }


        } 
        System.out.print(num);
        bw.write(num);
        if( i%2 ==1)
        {
         System.out.println(array[2]);
         bw.write(array[2]+" ");
        }
       }
      }
      bw.flush();
      br.close();
      bw.close();
     }
    }








    7、 请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。


    import java.io.*;
    class BufferedReaderDemo
    {
     public static void main (String args[])
     {
      try
      {
       BufferedReader br = new BufferedReader(
         new FileReader("e:\1.txt"));
       String str = "";
       int num=1;
       while((str=br.readLine())!=null)
       {
        String s = num+":"+str;
        num++;
        System.out.println(s);
       }
       br.close();
      }
      catch (IOException e)
      {
       e.getMessage();
      }
     }









    8、  请结合我们的《javascript网页开发》一书中介绍的正则表达式与String.split方法,从"http://www.it315.org/get.jsp?user=zxx&pass=123"这样的URL地址中提取出每个参数的名称和值。这里要注意在正则表达式中要对?进行转义处理


    import java.util.*;
    class  SplitDemo
    {
     public static void main(String[] args) 
     {
      String s = "http://www.it315.org/get.jsp?user=zxx&pass=123";
      String array[] = s.split("\?");
      String s1 =array[1];
      String array1[] = s1.split("\&"); 
      
      Map<String,String> hashmap = new HashMap<String,String>();
      for(int i=0;i<array1.length;i++)
      {
       String s2 = array1[i];
      
       String array2[] =  s2.split("=");


       hashmap.put(array2[0],array2[1]);
      }
      System.out.println(hashmap);
     }
    }










    9、请按下面内容编写一个页面,点页面里的“全选”时,能选中或清除上面的所有水果。
              选择你喜欢的水果:
    □苹果 □桔子 □香蕉 □葡萄 □桃子 □全选 


    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script   language="javascript">     
    function   selectAll()       
    {     
     for(var i=0;i<document.form1.nameid.length;i++)     
     {     
      var temp=document.form1.nameid[i];     
      temp.checked=true;     
     }     

    function   deleteAll()       
    {     
     for(var i=0;i<document.form1.nameid.length;i++)     
     {     
      var temp=document.form1.nameid[i];     
      temp.checked=false;     
     }     
    }     
    </script>  
    </head>
    <body>
    <form name="form1" method="post" action="">   
          <input type="checkbox" name="nameid" />苹果</br>   
          <input type="checkbox" name="nameid" />桔子</br>   
          <input type="checkbox" name="nameid" />香蕉</br>   
          <input type="checkbox" name="nameid" />萄萄</br>   
          <input type="checkbox" name="nameid" />桃子</br>   
          <input type="button" name=selectButton value="全选" onClick="selectAll()" />   
       <input type="button" name=selectButton value="重置" onClick="deleteAll()" />
    </form>
    </body>




     


    10、请登陆访问http://www.it315.org/bbs/页面,这个页面左侧导航栏部分可以收缩、显示,请参照此页面编写一个也能把导航栏收缩、显示的页面。


    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <style>
    dl {overflow:hidden; height:16px;}
    .open { overflow:visible}
    .close { overflow:hidden; height:16px;}
    </style>
    <script>
    function oc(dt)
    {
     var dl = dt.parentNode;
     var dlarr = document.getElementsByTagName("dl");
     for(var x=0; x<dlarr.length; x++)
     {
      if(dlarr[x].id == dl.id)
      {
       if("open"==dl.className)
       {
        dl.className = "close";
       }
       else
       {
        dl.className = "open";
       }
      }
      else
      {
       dlarr[x].className= "close";
      }
     }
    }
    </script>
    </head>
    <body>


    <dl id="dl_1" >


     <dt onclick="oc(this)">中国</dt>
     <dd>北京</dd>
     <dd>上海</dd>


    </dl>


    <dl id="dl_2" >


     <dt onclick="oc(this)">美国</dt>
     <dd>纽约</dd>
     <dd>华盛顿</dd>
     
    </dl>


    </body>
    </html>

  • 相关阅读:
    minecraft我的世界汇总网站
    扫雷网页版
    扫雷模型(非完全一样)
    设计模式-策略模式
    hadoop(2)hadoop配置
    hadoop(1)入门
    Openssl
    加密解密
    信息安全通信
    Web
  • 原文地址:https://www.cnblogs.com/altman29/p/4903547.html
Copyright © 2011-2022 走看看