java 数组问题 用Java怎么写出来啊!
.对50位的数组进行循环减法操作,每次减去10,数组中最小的存放数字为0。当前循环造成数组中数据小于0时按0计算。若原本数组中该值为0,则当前循环不计算次数。循环结束条件...
.对50位的数组进行循环 减法 操作,每次减去10,数组中最小的存放数字为0。当前循环造成数组中数据小于0时按0计算。若原本数组中该值为0,则当前循环不计算次数。循环结束条件,运算超过1000次或者数组中的数字都为0。最后输出数据内容还有运算次数
展开
3个回答
推荐于2016-11-13 · 知道合伙人软件行家
关注
展开全部
在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
展开全部
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]+" 、");
}
}
}
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]+" 、");
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
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次了。数据内容的输出也有了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |