java 数组问题 用Java怎么写出来啊!

.对50位的数组进行循环减法操作,每次减去10,数组中最小的存放数字为0。当前循环造成数组中数据小于0时按0计算。若原本数组中该值为0,则当前循环不计算次数。循环结束条件... .对50位的数组进行循环 减法 操作,每次减去10,数组中最小的存放数字为0。当前循环造成数组中数据小于0时按0计算。若原本数组中该值为0,则当前循环不计算次数。循环结束条件,运算超过1000次或者数组中的数字都为0。最后输出数据内容还有运算次数 展开
 我来答
青鸟中关村专家
推荐于2016-11-13 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部

    在JAVA中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性数列,这使得元素访问非常快速。但是为此付出的代价却是数组的大小被固定,并且在其生命周期中不可改变

    1、初始化
    JAVA对数组初始化有很严格的规定,这样可以有效地防止滥用数组。如果初始化错误,会直接得到CompileException而不是RuntimeException。在未对数组正确初始化之前,无法用此数组引用做任何事情。
数组定义有int[] array 和int array[],一般采用第一种风格,可以将类型与变量名分开。
数组的初始化有两种方式,静态初始化和动态初始化。初始化的时候必须指定长度,多维数组第一维的长度必须指出,同时必须由高维向低维定义。初始化动作可以在代码的任何地方,而用{}方式只能在创建数组的地方出现

    


public class javaArrayInit{
    public static void main(String args[]){
        int[] arrayA; //未初始化
        int[] arrayB = new int[5]; //静态初始化
        //System.out.println(arrayA.length);  //CompileException
        System.out.println("arrayB length: " + arrayB.length); //无法得到实际保存的元素个数

        arrayA = new int[10]; //动态初始化
        System.out.println("arrayA length: " + arrayA.length);

        int[] arrayC = new int[]{1,2,3,4};
        System.out.println("arrayC length: " + arrayC.length);

        //int[] arrayD = new int[1]{1}; //错误的初始化,不能同时定义维和初始化值

        int[][] arrayE = new int[1][];
        System.out.println("arrayE length: " + arrayE.length);

        //int[][] arrayF = new int[][2]; //应先指定高维的长度

        int[][] arrayG = new int[][]{{1,2,3,4},{5,6,7},{7,24,23,24}};
        System.out.println("arrayG length: " + arrayG.length);

        int[][][] arrayH = new int[][][]{{{1,2,3},{4,5,6},{7,8,9},{10,11,12}}};
        System.out.println("arrayH length: " + arrayH.length);

        dummyArray[] arrayI = {new dummyArray(),new dummyArray()}; //自定义数组类型
        System.out.println("arrayI length: " + arrayI.length);
        System.out.println("arrayI[1]: " + arrayI[1].getValue());

        dummyArray[] arrayK = new dummyArray[5];
        System.out.println("arrayK[0]: " + arrayK[0]); //null
        for(int i = 0; i < arrayK.length; i++){
            arrayK[i] = new dummyArray();
        }
        System.out.println("arrayK[0]: " + arrayK[0].getValue()); //2
    }
}
class dummyArray{
    private static int temp;
    private final int arrayValue = temp++;
    public int getValue(){
        return arrayValue;
    }
}  
 输出: 
 arrayB length: 5
arrayA length: 10
arrayC length: 4
arrayE length: 1
arrayG length: 3
arrayH length: 1
arrayI length: 2
arrayI[1]: 1
arrayK[0]: null
arrayK[0]: 2

2、赋值与引用
JAVA数组初始化的时候拥有的只是对数组的引用,并没有给数组分配存储空间。因此,数组之间的复制不能简单地用“=”赋值,因为操作的是同一对象。如下程序


public class javaArrayQuote{
    public static void main(String args[]){
        String testA = "testA";
        String testB = "testB";
        String[] arrayA = new String[]{"arrayA"};
        String[] arrayB = new String[]{"arrayB"};
        testB = testA;
        testB = "testB change";
        System.out.println("I'm testA,I have no changed: " + testA);
        arrayB = arrayA;
        arrayB[0] = "arrayB have changed";
        System.out.println("I'm arrayA, I have no changed: " + arrayA[0]);

    }
}
输出:  
 I'm testA,I have no changed:testA
I'm arrayA, I have no changed:arrayB have changed
百度网友7bfe765
2011-07-13
知道答主
回答量:39
采纳率:0%
帮助的人:20.5万
展开全部
public class TestArray {

public static void main(String[] args) {
int a[] = new int[50];
int count = 0; //统计计算次数的
for(int i=0; i<a.length;i++){ //初始化数组
a[i]=i;
}
while(count<=1000){
for(int i=0; i<a.length;i++ ){
if(a[i]!=0){
a[i] = a[i] - 10;
if(a[i]<0){
a[i]=0;
}
count++;
}
}
java.util.Arrays.sort(a); //每次for循环后将数组排序方便找出最大值和最小值
if(a[0]==a[a.length-1]){ //当最大值和最小值相等时 就表明数组元素全相同
break;
}
}
System.out.println("总共进行了 "+count+" 次计算");
System.out.println("数组内容是:");
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" 、");
}

}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lazzylion
2011-07-05 · TA获得超过1067个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:132万
展开全部
int arr[] ;
int k=0;
while(true)
{
boolean isAll0 = true;
for(int i=0;i<50;i++)
{
if(arr[i]>0)
{
isAll0=false;
k++;
arr[i]-=10;
if(arr[i]<0)
arr[i]=0;
}
}
if(isAll0)
break;
}
追问
您 好!那要是开始 就有数为0呢!并且操作减法1000次 就要推出啊!并且输出的数据内容 也不好输出啊!  我还是没搞明白!
望您能写详细点
追答
int arr[] ;
int k=1;
while(true)
{
boolean isOut= true;
for(int i=0;i0)
{
isOut=false;
if(k++=1000)
{isOut=true;
break;
}
System.out.println("做减法之前:arr["+i+"]="+arr[i]);
arr[i]-=10;
if(arr[i]0)所以不用管开始有数为0,为0则跳过。上面的程序可以判断操作1000次了。数据内容的输出也有了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式