2012-12-09 41 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调用实际上会得到一系列由其算法生成的数字。