A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钟林杰 中级黑马   /  2013-4-13 18:00  /  1103 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

每日一题!
今天练习java语言的数组操作。
大家一起来试试吧,比比谁的代码更简洁更灵活和更高效!
题目:编写java程序创建一个String类的二维数组String arr1[][] = {{"200"},{"250","50"},{"100","300","25"}}
                        和一个String类的一维数组arr2[],将数组arr1中大于50(>)的元素复制到arr2[]中,然后打印出arr2中的元素。
                        再将arr2中最小的数替换为"min",最大的数替换为"max",最后打印出arr2中的元素。

结果为:300     100     250     200
              max     min     250     200
注意:分配arr2数组的空间必须是灵活的,而不是固定的输入一个数字分配。
                        例如固定分配:String arry2[] = new String[4];

(提交了你的答案之后才能看到我的答案哦,不要为了看答案而回复!)

class ArrayTest
{
        public static void main(String args[])
        {
                String arr1[][] = {{"200"},{"250","50"},{"100","300","25"}};                                        //建立二维数组arr1[][]
                int count = 0;                                                                                                                                                                                                                                //定义一个变量count为了给arr2[]分配内存
               
                for(String arr[]:arr1)                                                                                                                                                                                                //利用foreach遍历数组中大于50的数,并用count记录长度
                {
                        for(String s:arr)
                        {
                                if(new Integer(s)>50)
                                        count++;
                        }
                }
               
                String arr2[] = new String[count--];                                                                                                                                        //创建一维数组arr2
               
                for(int i=0;i<arr1.length;i++)                                                                                                                                                                //用for循环遍历数组
                {
                        for(int j=0;j<arr1.length;j++)
                        {
                                if(new Integer(arr1[j])>50)                                                                                                                                        //判断数组中的元素是否大于50
                                {
                                        arr2[count--] = arr1[j];                                                                                                                                                //将数组中大于50的元素复制给数组arr2
                                }
                        }
                }
               
                int max = 0,min = 0;                                                                                                                                                                                                //定义两个整型变量记录arr2中最大和最小的值的角标
               
                for(int i=0;i<arr2.length;i++)
                {
                        if(!(new Integer(arr2[max])>new Integer(arr2)))
                        {
                                max = i;
                        }
                        if(!(new Integer(arr2[min])<new Integer(arr2)))
                                {
                                        min = i;
                                }
                }
               
                for(int i=0;i<arr2.length;i++)                                                                                                                                                //打印原来的arr2
                        System.out.print(arr2+"\t");
               
                arr2[max] = "max";                                                                                                                                                                                                //把"max"替换最大值
                arr2[min] = "min";                                                                                                                                                                                                //把“min”替换最小值
               
                System.out.println();
               
                for(int i=0;i<arr2.length;i++)                                                                                                                                        //打印修改后的arr2
                        System.out.print(arr2+"\t");
        }
}

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

3 个回复

倒序浏览
不会..我这代码我自己看了都蛋疼...
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String arr1[][] = {{"200"},{"250","50"},{"100","300","25"}};
  6.                 Set<String> set=new TreeSet<String>();
  7.                 for (int x=0;x<arr1.length;x++)
  8.                 {
  9.                         for(int y=0;y<arr1[x].length;y++)
  10.                         {
  11.                                 int num=Integer.parseInt(arr1[x][y]);
  12.                                 if(num>50)
  13.                                 {
  14.                                         set.add(arr1[x][y]);
  15.                                 }
  16.                         }
  17.                 }
  18.                 System.out.println(set);
  19.                 String[] arr2= set.toArray(new String[0]);
  20.                 arr2[0]="min";
  21.                 arr2[arr2.length-1]="max";
  22.                 printArr(arr2);
  23.         }
  24.         public static void printArr(Object[] arr)
  25.         {
  26.                 for(int x=0;x<arr.length;x++)
  27.                 {
  28.                         if (x==0)
  29.                                 System.out.print("["+arr[x]+",");
  30.                         else if  (x==arr.length-1)
  31.                                 System.out.println(arr[x]+"]");
  32.                         else
  33.                                 System.out.print(arr[x]+",");
  34.                 }
  35.         }
  36. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
李尧 发表于 2013-4-13 19:47
不会..我这代码我自己看了都蛋疼...

你怎么用了集合了,这是数组的练习。:L
回复 使用道具 举报
钟林杰 发表于 2013-4-13 20:44
你怎么用了集合了,这是数组的练习。

懒呗..直接toArray了..突然发现我智商不够用了..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马