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();
}
}
}
}