2017-08-17 48 views
0

Java代碼問題。Java代碼1+問題

import java.util.Random; 

public class arrayTable { 
public static void main (String[] args) { 
    System.out.println("Index\t + Value"); 
    int Array[] = new int[10]; 

    Random Object = new Random(); 
    int Values; 

    // Assigning random values to each element of array 

    for(int i=0; i<Array.length;i++) { 
     Values= (1+Object.nextInt(50)); 
     Array[i] = Values; 
    } 

    for(int j=0;j<Array.length;j++) { 
     System.out.println(j + "\t" + Array[j]); 
     } 

    } 
} 

下面這段代碼我寫(1+)旁邊的對象,這樣的指數應該是從1開始,但是當我曾經在始終運行的代碼開始於指數0,它並不重要,如果我鍵入2+或3+公關。任何人都可以幫助指出代碼的問題。

謝謝你提前。

+1

保重了Java命名的慣例。類名應以大寫字母開頭,小寫字母的變量名稱爲 – Jens

+0

問題是什麼?你在數組中存儲的值都大於或等於1. –

+0

什麼意思*,所以索引應該從1開始,*?該索引是我,並開始在循環中定義的0 – Jens

回答

3

我寫的(1+)旁邊的對象,因此該指數應在1

你寫1+旁邊不是指數開始!

所以,你這樣做是:

array[0] = 50 + 1; 

相反的:如果你想從索引1開始

array[0 + 1] = 50; 

你應該把它寫在這裏:

Array[i + 1] = Values; 

然而,因爲你在for循環中,所以你可以碰到ArrayIndexOutOfBoundsException,所以,更好的我DEA是:

for(int i=1; i<Array.length;i++) { //Look the "i" was initialized with 1 and not with 0. 

記住:數組START FROM 0 INDEX

如果你想「跳過」的第一個元素,那麼上面修改for循環應該工作,但如果你想它從1運行10那麼它是一個壞主意,因爲它應該是從09

你也應該小心遵循Java命名約定:

  • firstWordLowerCaseVariable
  • firstWordLowerCaseMethod()
  • FirstWordUpperCaseClass
  • ALL_WORDS_UPPER_CASE_CONSTANT

,並堅持使用他們,這會讓你的代碼更容易閱讀和理解,爲您和我們。

此外,儘量不要說出你的類/變量的Java類的名字:

ObjectArrayList等可能是錯誤的選擇,也有object小寫將是一個糟糕的主意,因爲它不是描述性無論是作爲通過@nicomp建議上的評論下面


,但是當i型陣列[I + 1]它仍然從索引0打印出,例如,如果我在哪裏,使我骰子我會希望它開始在指數1,是有沒有辦法做到這一點?

我想你沒有改變for(int j=0;j<Array.length;j++) {循環,從1

開始做一個骰子我想:

  • 創建6個插槽(從0開始)的陣列
  • 填充它(1 - 6)如下面(內側的for環):

    dice[0] = 1; 
    dice[1] = 2; 
    ... 
    dice[5] = 6; 
    
    //Example of for loop 
    for (int i = 0; i < dice.length; i++) { 
        dice[i] = i + 1; 
    } 
    
  • 獲取的隨機數(0之間 - 5)稱爲random

  • 在位置random

獲取陣列的值。例如:

random = 3; 
//dice[random] = 4; 
System.out.println(dice[random]); 
+1

如果我們正在堆砌,我們不要命名對象'對象'或甚至'對象'。 – nicomp

+0

非常有用非常感謝你 –

+0

@nicomp編輯添加您的評論:) – Frakcool