2012-12-09 89 views
-1

我試圖開發程序,其中,隨機數生成器將建立一個號碼,然後根據選擇,一個預先定義的陣列的構件中的一個將被打印的數量。(我想被內調用的方法數組索引號)在java中這個隨機int生成器有什麼問題?

import java.util.Random; 
import java.util.Scanner; 


public class Testing{ 
public static void main(String args[]){ 
public static int calculatew() { 
    Random generator = new Random(); 
    int number1 = generator.nextInt(3); 
} 
String array1 [] = new String[4]; 
array1[1]="Tom"; 
array1[2]="Jerry"; 
array1[3]="Mike"; 
array1[0]="Dustin"; 
System.out.println("the very first name is "+array1[calculatew]+" The second name is "+array1[calculatew]+" the third accodental name is "+array1[calculatew]+" and the final random name is "+array1[calculatew]+"."); 

} 
} 

當程序被編譯它給我回了以下錯誤:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
Syntax error on token(s), misplaced construct(s) 
Syntax error on token "int", @ expected 
calculatew cannot be resolved to a variable 
calculatew cannot be resolved to a variable 
calculatew cannot be resolved to a variable 
calculatew cannot be resolved to a variable 

at Testing.main(Testing.java:7) 

會有人告訴我的主要問題是這一計劃的內容。

非常感謝你對你的答案提前

+1

之一的嚴格要求有關縮進你的代碼的好處是,你的錯誤變得更加容易察覺。這是一個暗示。 – goat

回答

2

的一個問題是:主要

public static void main(String args[]){ 
int calcResults = calculatew(); 
.... 
} 
public static int calculatew() { 
    Random generator = new Random(); 
    int number1 = generator.nextInt(3); 
    return number1; 
} 
+1

他還應該用'()' – Esailija

+1

調用它,並且該方法需要返回一個int ... – assylias

0

public static void main(String args[]){ 
public static int calculatew() { 
    Random generator = new Random(); 
    int number1 = generator.nextInt(3); 
} 

移動方法不能定義裏面方法的方法。您應該在main()方法之外定義calculatew()方法。您的代碼必須是:

import java.util.Random; 
import java.util.Scanner; 


public class Testing { 
    public static void main(String args[]){ 
    String array1 [] = new String[4]; 
    array1[1]="Tom"; 
    array1[2]="Jerry"; 
    array1[3]="Mike"; 
    array1[0]="Dustin"; 
    System.out.println("the very first name is "+array1[calculatew()]+" The second name is "+array1[calculatew()]+" the third accodental name is "+array1[calculatew()]+" and the final random name is "+array1[calculatew()]+"."); 
    } 

    public static int calculatew() { 
    Random generator = new Random(); 
    int number1 = generator.nextInt(3); 
    } 
} 
0

你把calculatew方法定義你的主要方法的定義裏面,你不能在Java中做到這一點。把它們並排放在一起,你應該沒問題。

0

游到底是什麼問題,編譯器告訴你。更改爲方括號內的「calculatew()」,並將方法定義移到主方法之外。

0

編譯器只是告訴你,calculatew不是一個變量。如果你想用它作爲一個方法(就像你一樣),你必須輸入calcualatew()。括號告訴編譯器,輸入的內容是必須調用的方法。如果刪除編譯器把它看作一個可變的支架,所以它會告訴你找不到它的變量棧內也不是一個對象句柄,它無法找到

--edit

嘗試使用像一個IDE eclipse,如果在語法上有錯誤並直接指向該行並提供關於如何解決問題的建議,則在請求編譯之前告訴您如果在使用eclipse時需要幫助,請在評論中通知我

1

另外到已經發布的關於如何調用方法的答案,calculatew會在每次調用時創建一個新的Random實例。隨機是在一天中的時間初始化的,所以你可能會得到幾個相同的結果。

這將是更好地使發電機在類,被加載的類時初始化一次靜態字段。然後,這一系列nextInt調用實際上會得到一系列由其算法生成的數字。