2010-11-15 54 views
0

首先,我必須創建一個長度爲n的數組,填充該數組的輸入變量,然後在數組位置k,我必須將所有數組的位置k推到1以上,將x的值放入數組位置k。但是,如果k = n,則將x置於n + 1。數組變量輸入幫助[關閉]

首先,我有一個問題,使k和x的整數工作。出於某種原因,代碼將n設置爲第一個輸入,並在設置n時立即將k和x設置爲與n相同。

其次,我無法將數組擴展到n + 1。我知道不要只是給我答案,但我需要一些方向去哪裏。對於n

import java.util.Scanner; 
public class hw2 
{ 
    public static void main(String[] args) 
    { 
    Scanner scan = new Scanner(System.in); 
    int n = scan.nextInt(); 
    int k = scan.nextInt(); 
    int x = scan.nextInt(); 
    int[] a = new int[n]; 
    for(int i = 0; i<n; i++) 
    { 
    a[i] = scan.nextInt(); 
    } 
    n++; 
    final int LENGTH = a.length - 1; 
    for(int j=LENGTH; j>k; j--) 
    { 
    a[j] = a[j-1]; 
    } 
    a[k] = x; 
    for(int h = 0; h < n; h++) 
    { 
    System.out.println("location " + h + " is " + a[h]);  
    } 

    } 
} 

樣品輸入的K×A [0] ...... A [N-1]是

5 3 7 2 3 5 11 13 

分別。

的代碼與輸入運行後,n應= 6和陣列應該是

a[0] = 2 
a[1] = 3 
a[2] = 5 
a[3] = 7 
a[4] = 11 
a[5] = 13 

編輯:我讀問題完全錯誤的。在底部有淡淡的說:「假設數組大小至少N + 1」 ...

+3

這是功課嗎? (如果是這樣,請使用適當的標籤。) – GreenMatt 2010-11-15 22:10:30

+1

問題描述並不能根據您的示例輸出來捕獲完整的需求。數組應該排序嗎?重複刪除? – 2010-11-15 22:15:01

+0

@GreenMatt我被告知,使用家庭作業標籤以及所有其他元標籤是不鼓勵的。 – Mike 2010-11-15 23:21:14

回答

-1

你可以只使用ArrayList

+0

(-1)但這不是他所要求的。 – javamonkey79 2010-11-15 22:37:55

0

看起來一切,包括,這是好的:

import java.util.Scanner; 
public class hw2 
{ 
    public static void main(String[] args) 
    { 
    Scanner scan = new Scanner(System.in); 
    int n = scan.nextInt(); 
    int k = scan.nextInt(); 
    int x = scan.nextInt(); 
    int[] a = new int[n]; 
    for(int i = 0; i<n; i++) 
    { 
    a[i] = scan.nextInt(); 
    } 

之後,這是有點粗略。這個問題可以用幾種方法解釋...

然後在陣列位置k,輸入變量x的 。但是如果k = n,那麼在x + 1中輸入x

對我來說,這意味着「覆蓋」位置k的值,除非k == n。至於兩種方式 - 這取決於你的任務如何措辭。如果數組的大小無關緊要,那麼您可以從數組大小爲n + 1(或n + someArbitraryValue)開始,而不是n。如果您必須將大小保持在n或n + 1,具體取決於k == n檢查,那麼當k == n時,您需要設置一個大小爲n + 1的新數組,並將a中的值複製到它中。

希望這可以幫助不要太多。

+0

從他的代碼看來,數組已經被填充,並且他正在插入一個完整的數組。 – primehunter326 2010-11-15 23:09:32

+0

我的意思是把數組中的值放在數組位置k上,將數組向上移動一個,這樣沒有數值被覆蓋,只是向上移動一個,x放在位置k – Mike 2010-11-15 23:18:28

+0

那麼你的選擇是使用另一個數組移動物體或從開始移動數組大小> = N + 1。 – javamonkey79 2010-11-15 23:53:03

0

很難知道你在問什麼,因爲你的代碼與你寫的內容不一致。從我所瞭解的n元素數組已經被填充到容量。在這種情況下,您不能只在最後追加一個元素,您需要創建一個新數組並將舊數組中的所有數據複製到新數組中。

它的工作是這樣的:

int[] oldArr = new int[n]; //old array, full 
int[] newArr = new int[2*n];//new array 
for(i=0;i<n;i++){ 
    new[i] = old[i]; 
} 

然後只是把在新[N + 1]就像你通常會ķ英寸請注意,如果數組不是空的,只需要在n處插入x即可完成上述操作。

+0

我無法複製陣列。它必須是相同的數組名稱。 – Mike 2010-11-15 23:26:13