java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
 
public class test01 {
 
    /**
     * 根据以下要求,比较两个字符串的大小,并返回比较结果:
     *  1、比较两字符串的大小。
     *  2、忽视大小写
     *  3、 按字典序 如果第一个字符串大于第二个字符串 返回大于0,如果第一个字符串等于第二个字符串 返回等于0 ,如果第一个字符串小于第二个字符串返回小于0。
     *  4、例子 compareToIgnoreCase("HARD","hark")的比较结果返回小于0 。
     * @param str1
     * @param str2
     * @return
     */
    public static String test1(String str1, String str2)
    {
        String strValue = "";
        //compareToIgnoreCase是字符串比较大小、忽略大小写和返回值的方法
        if(str1.compareToIgnoreCase(str2) > 0)
        {
            strValue = "> 0";
        }else if(str1.compareToIgnoreCase(str2) == 0)
        {
            strValue = "= 0";
        }else
        {
            strValue = "< 0";
        }
 
        return strValue;
 
    }
 
    /**
     * 给一个二维数组inArr[ ][ ],写一个方法获取每一列的最小值,输出到一个一维数组outArr[ ]中。
     * 如:inArr[ ][ ]={{1,8,3},{6,5}},则输出outArr[ ] = {1,5,3}
     * @return
     */
    public static String test2(int[][] inArr)
    {
        //获取二维数组中一维数组的最大长度
        int maxLength = getMaxLength(inArr);
        List<Integer []> list1=new ArrayList<Integer []>();
        List<Integer> list = new ArrayList<Integer>();
        //循环一维数组的最大长度
        for (int j = 0; j < maxLength; j++)
        {
            //循环二维数组的长度
            for (int i = 0; i < inArr.length; i++)
            {
                //获取对应一维数组的长度
                int tempLength=inArr[i].length;
                //防止非法索引访问数组时抛出的异常,因为第二个一维数组少了一个长度,因此读取的时候索引大于数组的大小
                if((j+1)>tempLength)
                {
                    continue;
                }
                list.add(inArr[i][j]);
            }
            Integer temp[]=(Integer[]) list.toArray(new Integer[list.size()]);
            list= new ArrayList<Integer>();
            list1.add(temp);
        }
        int temp[]=new int[maxLength];
        int c=0;
        for(int i=0;i<list1.size();i++){
           Integer [] obj=(Integer [])list1.get(i);
           //升序
           Arrays.sort(obj);
           /*for(int j=0;j<obj.length;j++){
               System.out.print(obj[j]);
           }*/
           //在升序中取第一个
           temp[c++]=obj[0];
           /*System.out.println();*/
        }
        return "{"+temp[0]+","+temp[1]+","+temp[2]+"}";
 
    }
 
    /**
     * 获取数组的长度
     * @param array
     * @return
     */
     public static int getMaxLength(int array[][]) {
            int length = 0;
            for (int i = 0; i < array.length; i++) {
                length = length < array[i].length ? length = array[i].length : length;
            }
            return length;
        }
 
    /**
     * 判断一个字符串是否是首字母大写,其余字母都是小写。
     * @param str
     * @return
     */
    public static String test3(String str)
    {
        boolean bResult = true;
        String strValue = "";
        int iLength = str.length();
        for(int i=0; i<iLength; i++)
        {
            char c = str.charAt(i);
            if(i == 0)
            {
                //判断字母是否是大写
                if(!Character.isUpperCase(c))
                {
                    bResult = false;
                    break;
                }
            }else
            {
                //判断字母是否是小写
                if(!Character.isLowerCase(c))
                {
                    bResult = false;
                    break;
                }
            }
        }
 
        strValue = ("".equals(str)) ? "" : bResult + "";
 
        return strValue;
 
    }
 
    /**
     * 输入一个字符串,字符串是字母和数字的组合,编程实现输出一个新的字符串,要求字母在前面,数字在后面,顺序不变,例如:2s7ess83a 变成sessa2783
     * @param str
     * @return
     */
    public static String test4(String str)
    {
        StringBuffer strValue = new StringBuffer();
        StringBuffer strNumber = new StringBuffer();
        for(int i=0; i<str.length(); i++)
        {
            char c = str.charAt(i);
            //判断是否是数字
            if(Character.isDigit(c))
            {
                strNumber.append(c);
            }else
            {
                strValue.append(c);
            }
 
        }
 
        return strValue.toString() + strNumber.toString();
    }
 
    /**
     * 一个字符串,获取最长的一个单词,如有多个相同长度的单词返回第一个单词。入输入:"hello china"则返回 hello
     * @param str
     * @return
     */
    public static String test5(String str)
    {
        String strOld = "";
 
        String [] sStr = str.split(" ");
        for(String strNew:sStr)
        {
            //判断前一个单词比后一个单词短
            if(strOld.length() < strNew.length())
            {
                strOld = strNew;
            }
        }
 
        return strOld;
    }
 
    /**
     * 将一个字符里出现最多的字母截取,如,addcbbs变为acs。
     * @param str
     * @return
     */
    public static String test6(String str)
    {
        char[] cStr = str.toCharArray();
        int iMax = 0;       
 
        //把字符串去重复,这样可以方便定义数组长度等
        String strTemp = str.replaceAll("(?s)(.)(?=.*\\1)", "");
        int iLength = strTemp.length();
        int[] iCount = new int[iLength];
        char[] cTemp = strTemp.toCharArray();
 
        //获取每个字母出现的次数,并存储到数组
        for(int i=0; i<iLength; i++)
        {
            int iTemp = cTemp[i];
            for(int j=0; j<str.length(); j++)
            {
                int jTemp = cStr[j];
                if(iTemp == jTemp)
                {
                    iCount[i] += 1;
                }
 
            }
        }
 
        //获取字母出现最多的次数
        for (int i = 0; i < iCount.length; i++)
        {
            int iValue = iCount[i];
            if (iValue > iMax)
            {               
                iMax = iValue;
            }
        }
 
        //替换字母出现最多的字母
        for (int i = 0; i < iCount.length; i++)
        {
            int iValue = iCount[i];
            if (iValue == iMax)
            {
                int iID = strTemp.charAt(i);
                String strValue = (char)iID + "";
                str = str.replace(strValue, "");
            }
        }
 
        return str;
    }
 
    /**
     * 输入一个整型数组,arr=(1,2,5)
     *  输出数组中数字对应英文字母表中对应的字母,如果不在字母表中用"?"表示
     *  例如,输入arr=(1,2,30,3),输出:a b ? c
     * @param str
     */
    public static String test7(int[] inArr)
    {
        String strValue = "";
        for(int iArr:inArr)
        {
            //因为小写字母a的char值是97,因此需要增加96就可以达到char值
            iArr = iArr + 96;
            //判断是否超出和小于小写字母的char值
            if(iArr > 96 && iArr < 123)
            {
                strValue += (char)iArr;
            }else
            {
                strValue += "?";
            }
        }
 
        return strValue;
    }
 
    /**
     * 输入一数组,按照英文26个字母顺序,输出每个数字对应的字母,如果查不到,则输出?。如[1,3,30],输出ac?。
     * @param str1
     * @param str2
     */
    public static String test8(int[] inArr)
    {
        //a-z ==> 97-122
        String strValue = "";
        for(int iArr:inArr)
        {
            //因为小写字母a的char值是97,因此需要增加96就可以达到char值
            iArr = iArr + 96;
            //判断是否超出和小于小写字母的char值
            if(iArr > 96 && iArr < 123)
            {
                strValue += (char)iArr;
            }else
            {
                strValue += "?";
            }
        }
 
        return strValue;
    }
 
    /**
     * 把数组中的1-26的数字映射成a-z的小写字母
     * 如果输入其他数字,则在页面上打印"?"
     * 如:int [] arr={1,2,3,4,30}
     * 输出:a,b,c,d,?
     * @param inArr
     * @return
     */
    public static String test9(int[] inArr)
    {
        //a-z ==> 97-122
        String strValue = "";
        for(int iArr:inArr)
        {
            //因为小写字母a的char值是97,因此需要增加96就可以达到char值
            iArr = iArr + 96;
            //判断是否超出和小于小写字母的char值
            if(iArr > 96 && iArr < 123)
            {
                strValue += (char)iArr + ",";
            }else
            {
                strValue += "?,";
            }
        }
 
        strValue = ("".equals(strValue)) ? "" : strValue.substring(0, strValue.length() - 1);
 
        return strValue;
    }
 
    /**
     * 输入A-Z26个字母,输入一个大写字母后,输出该字母之后第5个字母的小写。
     * 如输入A,输出f,输入Z,则输出e,超出Z是,超过1个,则返回a,超过两个,则返回b,以此类推。
     * @param str
     * @return
     */
    public static String test10(String str)
    {
        String strValue = "";
        int iValue = str.charAt(0);
 
        //A-Z ===> 65-90,判断是否是大写
        if(Character.isUpperCase((char)iValue))
        {
            //86到90刚好5个,所以到了85后就会继续到a
            if(iValue < 86)
            {
                iValue = iValue + 5;
            }else
            {
                //公式是:64+(5-(90-iValue));为什么是从64开始而不是65,因为A是65,从Z到A也要加1
                iValue = iValue - 21;
            }
 
            char cValue = (char) (iValue);
            strValue = cValue + "";
            strValue = strValue.toLowerCase();
        }
        return strValue;
    }
 
    /**
     * 一个维数组,求大于等于数组内的所有值的平均值的个数
     * 例,{1、2、3、4、5、6、7、8、9、10}  输出 5
     * @param inArr
     * @return
     */
    public static String test11(int[] inArr)
    {
        int iNum = 0;
        int iLength = inArr.length;
        int iSum = 0;
        for(int iArr:inArr)
        {
            //加总
            iSum += iArr;
        }
 
        //平均值
        int iAvg = iSum/iLength;
 
        for(int iArr:inArr)
        {
            //比平均值高的,+1
            if(iArr > iAvg)
            {
                iNum = iNum + 1;
            }
        }
 
        return iNum + "";
    }
 
    /**
     * 给一个二维数组inArr[ ][ ],写一个方法获取每一列的最大值,输出到一个一维数组outArr[ ]中。
     *  如:inArr[ ][ ]={{1,8,3},{6,5}},则输出outArr[ ] = {8,6}
     *  选取一组一维数组,求出它的最大值和次大值,放入另一个一维数组中并返回。
     * @param inArr
     * @return
     */
    public static String test12(int[][] inArr)
    {
        StringBuffer strValue = new StringBuffer();
        int maxLength = 0; 
        int minLength = 0;
        //获取二维数组中的一维数组的最大长度
        for (int i = 0; i < inArr.length; i++)
        {           
            if (inArr[i].length > maxLength)
            {               
                maxLength = inArr[i].length;           
            }
        }
        //获取二维数组中的一维数组的最小长度
        for (int i = 0; i < inArr.length; i++)
        {
            if(i == 0)
            {
                minLength = inArr[i].length;
            }else
            {
                if (inArr[i].length < minLength)
                {               
                    minLength = inArr[i].length;           
                }
            }
        }
 
        //比较前,对输出赋予最大长度
        int[] outArr = new int[maxLength];
        for (int column = 0; column < maxLength; column++)
        {
            //获取Integer最小值并赋予输出数组    
            outArr[column] = Integer.MIN_VALUE;
            for (int row = 0; row < inArr.length; row++)
            {               
                if (column < inArr[row].length)
                {
                    //如果输入数组的值比输出的值大,输出数组的值由输入的值替代
                    if (inArr[row][column] > outArr[column])
                    {
                        outArr[column] = inArr[row][column];               
                    }               
                }           
            }       
        }
        //Arrays升序
        Arrays.sort(outArr);
 
        for(int i=0; i<minLength; i++)
        {
            strValue.append(outArr[maxLength - 1 - i]);
            strValue.append(",");
        }
        String str = strValue.toString();
        str = ("".equals(str)) ? "" : str.substring(0, str.length()-1);
 
        return "{"+ str +"}";
    }
 
    /**
     * 求两个数的最大公约数
     * @param str1
     * @param str2
     * @return
     */
    public static String test13(int str1, int str2)
    {
        int iMin = Math.min(str1, str2);
        for(int i=iMin; i>0; i--)
        {
            if(str1%i == 0 && str2%i == 0)
            {
                return i + "";
            }
        }
        return 0 + "";
    }
 
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        String strStart1 = "HARD";
        String strEnd1 = "hark";
        int [][] inArr212 = {{1, 8, 3}, {6, 5}};
        String strValue3 = "HadadsDs";
        String strValue4 = "2s7ess83a";
        String strValue5 = "hello china";
        String strValue6 = "addcbbs";
        int[] inArr7 = {1,2,30,3};
        int[] inArr8 = {1,3,30};
        int[] inArr9 = {1,2,3,4,30};
        int[] inArr11 = {1,2,3,4,5,6,7,8,9,10};
 
        System.out.println("输出:");
        System.out.println("Test1:比较两个字符串的大小,结果:  " + test1(strStart1, strEnd1));
        System.out.println("Test2:二维数组获取每一列的最小值,结果: " + test2(inArr212));
        System.out.println("Test3:判断 首字母大写,其余字母都是小写,结果:" + test3(strValue3));
        System.out.println("Test4:输出要求字母在前面,数字在后面,结果:" + test4(strValue4));
        System.out.println("Test5:获取最长的一个单词,如有多个相同长度的单词返回第一个单词,结果:" + test5(strValue5));
        System.out.println("Test6:字母截取,结果:" + test6(strValue6));
        System.out.println("Test7:输入一个整型数组,输出对应的字母,如:" + test7(inArr7));
        System.out.println("Test8:输入一数组,按照英文26个字母顺序,输出每个数字对应的字母,如果查不到,则输出?,结果: " + test8(inArr8));
        System.out.println("Test9:把数组中的1-26的数字映射成a-z的小写字母,结果: " + test9(inArr9));
        System.out.println("Test10:输入一个大写字母后,输出该字母之后第5个字母的小写,结果:" + test10("A"));
        System.out.println("Test11:求大于等于数组内的所有值的平均值的个数,结果: " + test11(inArr11));
        System.out.println("Test12:二维数组获取每一列的最大值,结果: " + test12(inArr212));
        System.out.println("Test13:求两个数的最大公约数,结果:" + test13(24, 36));
    }
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java题目(仅供学习): 一、根据以下要求,比较两个字符串的大小,并返回比较结果: 1、比较两字符串的大小。 2、忽视大小写 3、 按字典序 如果第一个字符串大于第二个字符串 返回大于0,如果第一个字符串等于第二个字符串 返回等于0 ,如果第一个字符串小于第二个字符串返回小于0。 4、例子 compareToIgnoreCase("HARD","hark")的比较结果返回小于0 。 二、给一个二维数组inArr[ ][ ],写一个方法获取每一列的最小值,输出到一个一维数组outArr[ ]中。 如:inArr[ ][ ]={{1,8,3},{6,5}},则输出outArr[ ] = {1,5,3} 三、判断一个字符串是否是首字母大写,其余字母都是小写。 例如 输入:True 输出: true 四、输入一个字符串,字符串是字母和数字的组合,编程实现输出一个新的字符串,要求字母在前面,数字在后面,顺序不变,例如:2s7ess83a 变成sessa2783 五、一个字符串,获取最长的一个单词,如有多个相同长度的单词返回第一个单词。入输入:"hello china"则返回 hello 六、将一个字符里出现最多的字母截取,如,addcbbs变为acs。 七、输入一个整型数组,arr=(1,2,5) 输出数组中数字对应英文字母表中对应的字母,如果不在字母表中用"?"表示 例如,输入arr=(1,2,30,3),输出:a b ? c 八、输入一数组,按照英文26个字母顺序,输出每个数字对应的字母,如果查不到,则输出?。如[1,3,30],输出ac?。 九、把数组中的1-26的数字映射成a-z的小写字母 如果输入其他数字,则在页面上打印"?" 如:int [] arr={1,2,3,4,30} 输出:a,b,c,d,? 十、输入A-Z26个字母,输入一个大写字母后,输出该字母之后第5个字母的小写。 如输入A,输出f,输入Z,则输出e,超出Z是,超过1个,则返回a,超过两个,则返回b,以此类推。 十一、一个维数组,求大于等于数组内的所有值的平均值的个数 例,{1、2、3、4、5、6、7、8、9、10} 输出 5 十二、给一个二维数组inArr[ ][ ],写一个方法获取每一列的最大值,输出到一个一维数组outArr[ ]中。 如:inArr[ ][ ]={{1,8,3},{6,5}},则输出outArr[ ] = {8,6} 选取一组一维数组,求出它的最大值和次大值,放入另一个一维数组中并返回。 十三、求两个数的最大公约数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值