一、创建一个静态方法,给它传入一个对象,请循环的打印出该对象所在类的类名和所实现的方法名(华为笔试最后一道编程)
二、假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等
三、给你一组字符串如:iu7i8hy4jnb2,让你编程输出里面的数字:7842
四、给你一组字符串让你把它倒叙输出
五、给你一组字符如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,出现几次

解决方案 »

  1.   

    希望大家也能附上一些Java笔试中的编程题
      

  2.   

    Class c = obj.getClass();
    Method[] ma = c.getMethods();
    int l = Array.getLength(ma);
    for(int i=0;i<l;i++) System.out.print(ma[i].getName() + " ");
      

  3.   

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String s = null;
    try {
    s = br.readLine();
    } catch (IOException e) {
             e.printStackTrace();
    }

    StringTokenizer st = new StringTokenizer(s);
    String s1 = st.nextToken();
    String s2 = st.nextToken();

    StringBuffer st2 = new StringBuffer(s2);
    if(s1.length() != s2.length()){
    System.out.println("not equal");
    return ;
    }

    for(int i=0;i<s1.length();i++){
    StringBuffer t = new StringBuffer();
    t.append(s1.charAt(i));
    int index = 0;
    if((index =st2.indexOf(t.toString()))!=-1){
    st2.deleteCharAt(index);
    }else{
    System.out.println("not equal");
    return ;
    }
    }
    if(st2.length() == 0)
    System.out.println("equal");
      

  4.   

    String s = "iu7i8hy4jnb2";
    for(int i=0;i<s.length();i++){
    char c = s.charAt(i);
    if(c-'0'>=0&&c-'9'<=0)
    System.out.print(c);
    }
      

  5.   


    String s = "dewdrop";
    StringBuffer sb = new StringBuffer(s);
    String s1 = (sb.reverse()).toString();
    System.out.println(s1);
      

  6.   

    /*第五*/
    public void fun4() {
    int[] a = { 1, 3, 4, 7, 2, 1, 1, 5, 2, 2, 7, 2, 7,4,4,4,4,4 };
    Arrays.sort(a);
    for (int i = 0; i < a.length; i++) {
    System.out.print(a[i] + " ");
    }
    int maxNumber = a[0], maxCount = 1;
    int curNumber = a[0], curCount = 1;
    for (int i = a.length - 1; i > 0; i--) {
    curNumber = a[i];
    if (a[i] == a[i - 1]) {
    curCount++;
    } else {
    if (curCount > maxCount) {
    maxCount = curCount;
    maxNumber = curNumber;
    }
    curCount = 1;
    }
    }
    System.out.println("\nmaxCount:"+maxCount+",maxNumber:"+maxNumber);
    }
      

  7.   

    第2题是不是可以考虑用一个replaceAll搞定?
      

  8.   

    是第三题,"iu7i8hy4jnb2".replaceAll("[^\\d]","");
      

  9.   

    要都有答案就好了,我也正想考考应聘的,但没答案就不知道对错了,因为我也不懂java
      

  10.   

    public static void outstat(Object object){
    System.out.println(object.getClass().getName());
            try{
             Method m[] = object.getClass().getDeclaredMethods();
                for (int i = 0; i < m.length; i++)
                    System.out.println(m[i].toString());
            }catch(Exception e){      
            }
    }
      

  11.   

    6、求两个数的公约数,M,N
    public void fun7(int a, int b) {
    int divisor =1;
    for (int i = 2; i <= b; i++) {
    if(a%i==0 && b%i==0){
    divisor = i;
    }
    }
    System.out.println(a+"和"+b+"的最大公约数是:"+divisor);
    }
    7、实现数组复制
    public void fun8(){
    int[] a = {1,2,3,4,56,7,8};
    int[] b = (int[])a.clone();
    Conica.print(a);
    Conica.print(b);
    b[0]=100;

    Conica.print(a);
    Conica.print(b);
    }
    8、冒泡排序的实现
    public void fun9(){
    int[] a = {1,5,2,6,8,74,1,25,69,8};
    Conica.print(a);
    for(int i=0; i<a.length-1; i++){
    for(int j=0; j<a.length-i-1;j++){
    if(a[j]>a[j+1]){
    int temp = a[j];
    a[j] = a[j+1];
    a[j+1] = temp;
    }
    }
    }
    Conica.print(a);
    }
    9、编程显示某一文件目录下的文件名
    public void fun10(){
    File file = new File("G:\\03月份");
    if(file.exists()){
    if(file.isDirectory()){
    String[] files = file.list();
    Conica.println(files);
    }
    }
    }
      

  12.   

    To:dewdrop(白露)
    第二题那样太费时了,只要把两个字符串分别排一下序,然后比较就搞定了。
      

  13.   

    to: f_acme(沧海一声笑)谢谢指导~~
      

  14.   

    重新做一下二题 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String s = null;
    try {
    s = br.readLine();
    } catch (IOException e) {
    e.printStackTrace();
    }

    StringTokenizer st = new StringTokenizer(s);
    String s1 = st.nextToken();
    String s2 = st.nextToken();

    byte[] sa1 = s1.getBytes();
    byte[] sb2 = s2.getBytes();
    Arrays.sort(sa1);
    Arrays.sort(sb2);

    String ss1 = new String(sa1);
    String ss2 = new String(sb2);

    if(ss1.equals(ss2))
    System.out.println("equal");
    else
    System.out.println("not equal");
      

  15.   

    TONYBLARED(奔放的犀牛) 
    第五个有问题,如果是1最多的话不对
      

  16.   

    继续问题:
    11、编程实现统计文本文件中某个单词的出现频率,并输出统计结果
    12、编程模仿DOS下的dir命令,列出某个目录下的内容(和第9题类似)
    13、编程说明String和StringBuffer字符串的区别
    14、编程计算N!的程序,一个使用递归方法,一个不用递归方法
    15、编程实现ASCII码和Unicode码之间的转换希望大家解答,答案越精简,效率越快越好
      

  17.   

    14递归
    long s=1;
    long fuction(int n){
    if(n==1)return s;
    else 
    {
    s*=n;
    n--;
    fuction(n);
    }
    }
    不递
    long s=1;
    for(int i=2;i<=n;i++)
    {
    s*=i;
    }
      

  18.   

    第三题可以用Character.isDigit(char)来解决for(int i=0,len=s.length();i<len;i++){
    if(Character.isDigit(s.charAt(i))){
    System.out.print(s.charAt(i));
    }
    }
      

  19.   

    good good study,up up day!
      

  20.   

    11题用HashMap来解决假设单词不存在跨行的,每个单词用,. ;分割BufferedReader br=null;
    try{
    br=new BfufferedReader(new FileReader("file.txt"));
    Map map=new HashMap();
    for(String s=br.readLine();s!=null;s=br.readLine()){
      StringTokenizer st=new StringTokenizer(s,",. ;");
        while(st.hasMoreTokens()){
          String temp=st.nextToken();
          if(map.containsKey(temp)){
            map.set(temp,new Integer((Integer)map.get(temp).intValue()+1));
          }else{
            map.set(temp,new Integer(1));
          }
        }
    }for(Iterator it=map.entrySet().iterator();it.hasNext();){
        Map.Entry entry=(Map.Entry)it.next();
        System.out.println(entry.getKey()+"-->"+entry.getValue()+"times");
    }}finally{
    br.close();
    }
      

  21.   

    Disney2002(小权),所言即是,谢谢.现在改正如下:
    public void fun4() {
    //int[] a = { 1, 3, 4, 7, 2, 1, 1, 5, 2, 2, 7, 2, 7, 4, 4, 4, 4, 4 };
    int[] a = {1,2,3,4,7,9,6};
    Arrays.sort(a);
    for (int i = 0; i < a.length; i++) {
    System.out.print(a[i] + " ");
    }
                      /*原先为:
                       int maxNumber = a[0], maxCount = 1;
     int curNumber = a[0], curCount = 1;
                      */
    int maxNumber = a[a.length-1], maxCount = 1;
    int curNumber, curCount = 1;
    for (int i = a.length - 1; i > 0; i--) {
    curNumber = a[i];
    if (a[i] == a[i - 1]) {
    curCount++;
    } else {
    if (curCount > maxCount) {
    maxCount = curCount;
    maxNumber = curNumber;
    }
    curCount = 1;
    }
    }
    System.out
    .println("\nmaxCount:" + maxCount + ",maxNumber:" + maxNumber);
    }
      

  22.   

    第一题:
    public class TestExp {
    /**
     * @param args
     */
    int i = 0;
    int j = 1;
    class Inner {
    int f1() {return 1;}
    int f2() {return 2;}
    int f3() {return 3;}
    int f4() {return 4;}
    }
    static void getClasses(Inner[] ins) {
    for(int i = 0 ; i < ins.length ; i++) {
    System.out.println(ins[i].getClass());
    System.out.println(ins[i].f1());
    System.out.println(ins[i].f2());
    System.out.println(ins[i].f3());
    System.out.println(ins[i].f4());
    }
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    TestExp te = new TestExp();
    TestExp.Inner[] ins = {te.new Inner() , te.new Inner()};
    te.getClasses(ins);
    }
    }
      

  23.   

    第三题:
    具体语法不熟,但是算法如下:
    得到字符串长度,然后按顺序循环提取每一个字符,比较是否是数字,如果是,放到一个字符串变量Str中(连接),全部比较完成后,将Str字符串类型转换为数字
      

  24.   

    TO:奔放的犀牛
    你改了以后的程序还是不对,当最小值的个数最多时,就会有问题!
    private static int[] str = {4,1,2,4,5,1,1,5,1,3,4,5};
    Arrays.sort(str);
    int maxNumber = str[str.length-1],maxCount = 1;
    int curNumber = str[0],curCount = 1;
    for(int i = str.length - 1;i>0;i--){
    curNumber = str[i];
    if(str[i] == str[i-1]){
    curCount ++;

    }
    else{
    if(curCount > maxCount){
    maxCount = curCount;
    maxNumber = curNumber;
    }
        curCount = 1;
    }   
       if(curCount > maxCount){      //只对最小值i =1时有效.
           maxCount = curCount;
           maxNumber = curNumber; 
       }
       
    } //System.out.println(String.valueOf(str));
    for(int i = 0;i < str.length;i++)
        System.out.print(str[i]);
    System.out.println("maxNumber:"+maxNumber+"maxCount:"+maxCount);
      

  25.   

    真是细微之处见真知啊,想必枫叶是个心细之人.我虚心改正如下.
    public void fun4() {
    int[] a = { 4, 1, 2, 4, 5, 1, 1, 1, 5, 1, 3, 4, 5 };
    Arrays.sort(a);
    for (int i = 0; i < a.length; i++) {
    System.out.print(a[i] + " ");
    }
    System.out.println();
    int maxNumber = a[a.length - 1], maxCount = 1;
    int curNumber = a[a.length - 1], curCount = 1;
    for (int i = a.length - 1; i > 0; i--) {
    curNumber = a[i];
    if (a[i] == a[i - 1]) {
    curCount++;
    } else {
    System.out.println("i=" + i + ",curCount=" + curCount
    + ",maxCount=" + maxCount + ",maxNumber=" + maxNumber);
    if (curCount > maxCount) {
    maxCount = curCount;
    maxNumber = curNumber;
    }
    curCount = 1;
    }
    }
    if (curCount > maxCount) {
    maxCount = curCount;
    maxNumber = curNumber;
    }
    System.out.println("curCount=" + curCount + ",maxCount="
    + maxCount + ",maxNumber=" + maxNumber);
    }
      

  26.   

    第五题,输入是一组字符,又是数字,就是0,1,2,3,4,5,6,7,8,9这10个数字了。那么,程序可以这样写:
    class Test
    {
    int[]count={0,0,0,0,0,0,0,0,0,0};
    void input(String[] args)
    {
    for (int i=0; i<args.length; ++i)
    {
    ++count[Integer.parseInt(args[i])];
    }
    }
    void output()
    {
    int max=0;
    for (int i=1; i<10; ++i)
    {
    if (count[max] <= count[i])
    {
    max = i;
    }
    }
    System.out.println("\nmaxCount="+count[max]+", maxNumber="+max);
    } public static void main(String[] args)

    test t=new Test();
    t.input(args);
    t.output();

    }
      

  27.   


    import java.util.regex.*;public class String1 {
    public void getInt(String s){
    String regEx = "[0-9]{1}";
    Pattern pattern = Pattern.compile(regEx);
    String[] ss = s.split(""); 
    for(int i = 0;i<ss.length;i++){
    String a = ss[i];
    Matcher matcher = pattern.matcher(a);
    if(matcher.find()){
    System.out.print(a);
    }
    }
    }

    public static void main(String[] args){
    String1 test = new String1();
    test.getInt("iu7i8hy4jnb2");
    }
    }
      

  28.   

    四、给你一组字符串让你把它倒叙输出c语言的#include <stdio.h>
    #include <stdlib.h>
    #include <string.h>int sort_n( const void *a, const void *b);char list[6][3] = {"ab","av","bc","cd","fn","pl"};int main(void)
    {
       int  x;   qsort((void *)list, 6, sizeof(list[0]), sort_n);
       for (x = 6; x >=0; x--)
          printf("%s\n", list[x]);
       return 0;
    }
    int sort_n( const void *a, const void *b)
    {
       return(strcmp(a,b));
    }
    java中是否有字符串拷贝函数
    还有是否有排序函数
      

  29.   

    第五题实际多加一个if条件即可if (a[i] == a[i - 1]||(i-1)!=0) {
    curCount++;
    } else {
    System.out.println("i=" + i + ",curCount=" + curCount
    + ",maxCount=" + maxCount + ",maxNumber=" + maxNumber);
    if (curCount > maxCount) {
    maxCount = curCount;
    maxNumber = curNumber;
    }
      

  30.   

    请教StringTokenizer这个方法是什么意思,看jdk没看懂
    还有if(c-'0'>=0&&c-'9'<=0)  这个怎么理解
      

  31.   

    看到三题道题的答案是这样解的,"iu7i8hy4jnb2".replaceAll("[^\\d]",""); 不是很明白 replaceAll的这种用法 ,那位能解释一下
      

  32.   

    第二個題的答案:
    public class Class2
    {
      String s = "iu7i8hy4jnb2";  public Class2()
      {
      }  public static void main(String[] arg)
      {
        Class2 c = new Class2();
        String result="";
        int l = c.s.length();
        int i = 0;
        for (i = 0; i < l; i++)
        {
          String c1 = c.s.substring(i, i+1);
          try
          {
            Integer.parseInt(c1);
            result=result+c1;
          }
          catch (Exception e)
          {
          }
        }
        System.out.println("result:"+result);
      }
    }
      

  33.   

    第四個題的答案

    public class Class3
    {
      String s="wpsxkygkadjgoha";
      public Class3()
      {
      }
      public static void main(String[] arg)
      {
        Class3 c=new Class3();  
        String result="";
        for(int i=c.s.length();i>0;i--)
        {
          String s1=c.s.substring(i-1,i);
          result=result+s1;
        }
        System.out.println(result);
      }
    }
      

  34.   

    第五題答案:
    public class Class4
    {
      String s = "1,3,4,7,2,1,1,5,2,2,5,56,98,63,6,5,6,3,,5,5,6,5,6,5,5,,2,2,5,5,5,5,6,6,,6,65,6,59,532685,,7,215,7,5,15,7,51,5,7,854,54,84,24,87,,21,5,7,51,57,5,15,7,84,6,59,23,2,687,6,2,3";
      int look[][] = new int[100][2];
      int currentNum = 0;  public Class4()
      {
      }  public static void main(String[] arg)
      {
        Class4 c = new Class4();
        for (int i = 0; i < c.s.length(); i++)
        {
          try
          {
            int T=Integer.parseInt(c.s.substring(i,i+1));
            c.compareAndInput(T);
          }
          catch (Exception e)
          {
            //不是數字就不管
          }
        }
        for(int i=0;i<c.currentNum;i++)
        {
          for(int j=0;j<2;j++)
          {
            System.out.print(" result["+i+"]["+j+"]:"+c.look[i][j]);
          }
          System.out.println("");
        }
        int maxNum=0;
        int maxNumNum=0;
        for(int i=0;i<c.currentNum-1;i++)
        {
         if(c.look[i][1]>maxNumNum)
         {
           maxNum=c.look[i][0];
           maxNumNum=c.look[i][1];
         }
        }
        System.out.println("Max Number is:"+maxNum);
        System.out.println("Max Number num is:"+maxNumNum);
      }  private void compareAndInput(int a)
      {
        int i = 0;
        for (i = 0; i < currentNum; i++)
        {
          if (look[i][0] == a)
          {
            look[i][1]++;
            break;
          }
        }
        if (i == currentNum) //說明沒有這個數在數組中
        {
          look[i][0] = a;
          look[i][1] = 1;
          currentNum++;
        }
      }
    }
      

  35.   

    十四題:
    public class Class7
    {
      public Class7()
      {
      }
      private int result(int n)//非遞歸
      {
        int result=1;
        for(int i=1;i<=n;i++)
        {
          result=result*i;
          
        }
        return result;
      }
      private int dg(int n)
      {
        if(n==1)
        {
          return n;
        }else
          return n*dg(n-1);
      }
      public static void main(String[] arg)
      {
        Class7 c=new Class7();
        System.out.println("result:"+c.result(10));
        System.out.println("dg:"+c.dg(10));
      }
    }
      

  36.   

    流星的String.substring方法用的很合适啊
      

  37.   

    比较字符串那个我觉得这样写也行。大家看看!
    import java.util.*;public class My {

    public boolean a;

    My()
    {
    a = equ("aba", "baa");
    System.out.print(a);
    } public boolean equ(String s1, String s2)
    {
    if (s1.length() != s2.length()) return false;
    char a1[] = s1.toCharArray();
    char a2[] = s2.toCharArray();
    Arrays.sort(a1);
    Arrays.sort(a2);
    for (int i = 0; i < s1.length(); i++)
    {
    if (a1[i] != a2[i]) return false;
    }
    return true;
    }

    public static void main(String[] args)
    {
    My obj = new My();
    }
    }
      

  38.   

    我这也有一道提,不知怎么写。
     求两个日期之间的天数。输入的都是字符串形式,例如2004/03/21,2006/03/21。求两个之间的天数。
    第一中方法可以系统函数。
    第二种方法不能用系统函数。
    int days(string date1,string date2)
      

  39.   

    过于简单了。不过也能看出人的功底。
    尤其第一个题目
    稍微回一点Class 反射就不会难到。
      

  40.   

    第一题:
    import java.lang.reflect.*;
    public class test{
    public static void test(Object obj){
    Class clazz=obj.getClass();
    //System.out.println("类名:"+clazz.getName());
    Method[] ms=clazz.getDeclaredMethods();
    long len=Array.getLength(ms);
    for(int i=0;i<len;i++){
    System.out.println("类名:"+clazz.getName()+"方法名:"+ms[i].getName());
    }}public static void main(String[] args){
    test.test(new A());
    }
    }class A{
    public void b(){}public void c(){}public void d(){}public void e(){}
    }
      

  41.   

    package test;import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;import javax.swing.JOptionPane;public class Testt {
    public static void reverseString(String f, String s) {
    Map f_m = new HashMap();
    Map s_m = new HashMap();
    for (int i = 0; i < f.length(); i++) {
    f_m.put(f.charAt(i), f.charAt(i));
    }
    for (int i = 0; i < s.length(); i++) {
    s_m.put(s.charAt(i), s.charAt(i));
    }
    int count = f_m.size();
    System.out.println("f_m="+f_m.size());
    System.out.println("s_m="+s_m.size());
    if (f_m.size() == s_m.size() ) {
    f_m.putAll(s_m);
    Iterator it = f_m.keySet().iterator();
    while(it.hasNext()){
    System.out.println("元素="+it.next());
    }
    if (f_m.size() == count) {
    System.out.println("相等");
    } else {
    System.out.println("不相等");
    }
    } else {
    System.out.println("不相等");
    }
    } public static void main(String args[]) {
    String firstStr = JOptionPane.showInputDialog("first");
    String secondStr = JOptionPane.showInputDialog("second");
    reverseString(firstStr, secondStr);
    }
    }
      

  42.   

    这个算法有点小小的问题,你将数组a改为int[] a = { 1, 3, 4, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,5,1,1, 2, 2, 7, 2, 7, 4, 4, 4, 4, 4 },运算一遍就知道了。原因是你最后一个curCount和curNumber没有跟maxCount和maxCount做比较。在第二个for循环后还需要再次执行这个if语句
    if (curCount > maxCount) {
    maxCount = curCount;
    maxCount= curNumber;
    }