每日一题!
今天练习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");
}
}
|