java数组位置
‘壹’ java数组移位
我看不懂,你到底是在平移数组元素还是把指定下标的元素变成默认值?第五个元知兆竖素原来是4你怎么把它变成0了?
下标越界是肯定的。数组一旦被定义,长度就是不变的。与其说是平移,你这个其实是插入操作,在指定的下标插入默认值。一旦插入新元素,数组的元素个数会变长,但这是不允许的,所以肯定会有下标越界异常。
如果搭大你真的是要插入一个默认元素的话你无法在原来的数组上进行操作,只能声明一个新的数组,长度比原来数组长猜手1,然后把旧的元素复制到新的数组,插入默认值,然后再把array的引用指向新数组。可以这样:
int[] array={0,1,2,3,4,5,6,7,8,9};
int[] temp=new int[array.length+1]; //
int k; //k为指定下标,假设已知
for(int i=0;i<k;i++)
temp[i]=array[i]; //复制下标前的元素
temp[k]=0; //设置默认值
for(int i=k;i<array.length;i++)
temp[i+1]=array[i]; //复制下标后的元素
array=temp; //改变数组引用
‘贰’ java怎么得到一个元素在数组中的位置
publicstaticvoid仿闹棚main(String[]args){
int[]is={28,7,15};
inti=0;
// 需求:需要得到7在数组弯尘中的位置
for(intj=0;j<is.length;j++){
if(is[j]==7){
i=j;
}
}
System.out.println("7在数组下标"备则+i+"的位置");
// System.out.println(is[i]);
}
‘叁’ Java数组元素位置交换
题目很简单,关键是思路
先找出最大值、最小值,并记住其位置
再做交换
具体参考下列代码
importjava.util.Arrays;
publicclassTest{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//第一步:定义数组
int[]arrs={6,2,9,15,1,5,20,7,18};
//第二步:找出最大值、最小值
intmaxIndex=0;//最大值初始索引=0
intmax=arrs[maxIndex];
intminIndex=0;//最小值初始索引=0
intmin=arrs[minIndex];
for(inti=1;i<arrs.length;i++){
if(arrs[i]>max){
max=arrs[i];
maxIndex=i;
}
if(arrs[i]<min){
min=arrs[i];
minIndex=i;
}
}
System.out.printf("第轮掘[%d]个值是最大值:%d ",(maxIndex+1),max);
System.out.printf("第[%d]个值是最歼族小值:%d ",(minIndex+1),min);
System.out.println("开始交换最大值");
intend=arrs[arrs.length-1];//记录最后一个元素值
arrs[arrs.length-1]=max;//最后一个元素值=max
arrs[maxIndex]=end;//原最大值=最后一腊改核个值
intstart=arrs[0];//记录第一个元素值
arrs[0]=min;//第一个元素值=min
arrs[minIndex]=start;//原最小值=第一个值
System.out.println("最终结果:");
System.out.println(Arrays.toString(arrs));
}
}
亲,答题也需要时间和精力,如果回答满意,请及时采纳,你的合作是我回答的动力!! 谢谢!!
‘肆’ jAVA如何使一个数组里面的元素随机交换位置
staticint[]getArray(int[]args){
intlength=args.length;
//生成一个随机数列表,list内的每个值代表数组的一个索引位置
List<Integer>list=new裂兆迟ArrayList<>();
while(list.size()<length){
intindex=newRandom().nextInt(length);
if(!list.contains(index)){
list.add(index);
}
}
//随机交换后的数组
int[]arry=newint[length];
//随机选取原数组的某个猜则值,分配给新数组
for(int肆李i=0;i<arry.length;i++){
arry[i]=args[list.get(i)];
}
returnarry;
}
‘伍’ java中的数组存在哪
最后那个打印是bb那个方法里面调换了值x=a[0];a[0]=b[0];b[0]=x;,先是100等于x,然后是吧200赋值给了a[0],接下来是吧x=100赋给了b[0],所以此时的a[0]=200,b[0]=100
数组分为堆上数组和栈上数组,x=a[0];x在堆上,a[0]在栈上.
‘陆’ java怎样获取元素在数组中的位置
public static void main(String[] args) {
int[] is = {28,7,15};
int i = 0;
// 需求:需要得到7在数组中的位置
for(int j=0;j<迟芦is.length;j++ ){
if(is[j]==7){
i=j;
}
}
System.out.println("7在数组下标"+i+"的位置码渣带");
/梁明/ System.out.println(is[i]);
}
‘柒’ Java中数组对象的存储位置
原帖地址:http://hi..com/sqldebug/blog/item/9758b9ffa605e51a09244d91.html
数组单一说在栈中还是堆中都是错误的,分为几种情况:
1、固定数组在函数体内分配是在栈中的
我们做一个试验,一般DELPHI程序线程的栈大小是1M,如果我们函数体中申请4M大小的数组,报栈溢出,则表示数据的大小是在栈中的。
const
CArrayCount = 1024*1024*4;
procere TForm1.btnMainThreadClick(Sender: TObject);
var
MainThreadArray: array[1..CArrayCount] of Char;
i: Integer;
begin
for i := Low(MainThreadArray) to High(MainThreadArray) do
MainThreadArray[i] := #0;
end;
我把以上代码在主线程中测试时,确实报了栈溢出,如果这时你把DELPHI程序的栈调大为6M则正确,表示在函数体中申请的数组是在栈中的。
2、固定数组在类中分配是在堆中的
我们在类中加一下定义语句
FFixArray: array[1..CArrayCount] of Char;
程序正常,表示在类中分配固定数组是在堆中的。
3、固定数组全局变量是在堆中的
我们在程序定义全部数组
GFixArray: array[1..CArrayCount] of Char;
程序也正常,表示全局固定长度是在堆中的。
3、动态数组不管在函数体中、类中、全局变量都是在堆中
如果你会汇编,看一下汇编就明白了。DELPHI这么实现是合理的,在函数里中分配的固定长度数组放在栈中可以加快运行效率,而且在多线程的情况下,不用像堆分配有加锁。只是大家在写程序的过程中注意在函数里定义太长的数组需要注意,否则栈溢出,程序就崩溃了。
‘捌’ java怎么得到一个元素在数组中的位置
最简启漏单的办法是遍历数组,检旦旁尺查每一个元素。
int i=0;
for(;i<array.length;i++)
if(array[i]==num)
break;
i 就是该元素在数模高组中第一次出现的位置(元素可能重复出现)。
‘玖’ java中如何输出数组中某个元素在数组中的原始的位置
按照你设定的那样,如果其中有好几个都比初始值小,那么会打出很逗胡段做瞎多个,所以你应该用一个临时变量来存。当然了,下面的这个打印出来的是数组中的位置,如果从第一位算0的话,那你就最后-1,就是一般的位置了山誉。
public static void outPutLocation(){
int x[] = {18,25,7,36,13,2,89,63,1};
int locateNum = 0;
int locateValue = x[0];
for(int i = 1; i < x.length; i++){
if(locateValue > x[i]){
locateValue = x[i];
locateNum = i;
}
}
System.out.println("最小值的位置是:"+locateNum);
System.out.println("最少的积分是:"+locateValue);
}
‘拾’ Java 怎样移动数组的位置~比如1 2 3 4 5 6 移动M位,比如2位,变成3 4 5 6 1 2
import java.util.Scanner;
public class ShuZu_yiwei{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("请输入原数组的数组元素,每个数组元素之间用空格隔开:");
String s = input.nextLine();
String []str = s.split(" ");//把字符串s按照空格划分,然后存储到数组str中
System.out.println("请输入要移动的数组元素个数:");
int M = input.nextInt();
String []array = new String[M];
String []barray = new String[str.length-M];
String []carray = new String[str.length];
System.array(str, 0, array, 0, M);//把原数组的前面M个复制到array中
System.array(str, M, barray, 0, barray.length);//把原数组的后str.length-M个复制到array中
System.array(barray,0,carray,0,barray.length);//把原数组的后str.length-M拷贝到目标数组中的前0到str.length-M,
System.array(array,0,carray,barray.length,array.length);//把原数组前面M个元素拷贝目标数组的后str.length-M到str.length
System.out.println("移动后的数纯樱正组为:");
for(int i=0;i<carray.length;i++)//打做悔颂歼印目标数组的每一个元素
{
System.out.print(carray[i]+" ");
if((i+1)%10==0){//每行输出是个数组元素
System.out.println();
}
}
}
}