问题
I am writing code to generate a random 3 letter strings using the letters a, b, and c. I am getting the error message "Syntax error on token ";", { expected after this token" after the line where i create the random variable (Random rand = new Random();). I do not know why I am getting this error when it looks fine to me.
I am also getting the error message: Syntax error, insert "}" to complete ClassBody, after the last bracket in the program. I am almost postive all my closing brackets match up so I do not know where this error is coming from. PLEASE HELP!!
import java.util.*;
public class Orders {
String alphabet = "abc";
ArrayList<String> list = new ArrayList<String>();
int n = alphabet.length();
Random rand = new Random();
for (int i = 0; i < 10000; i++){
char a = alphabet.charAt(rand.nextInt(n));
char b = alphabet.charAt(rand.nextInt(n));
char c = alphabet.charAt(rand.nextInt(n));
String s = Character.toString(a) + Character.toString(b) + Character.toString(c);
if(list.indexOf(s) == -1){
list.add(s);
}
}
system.out.println(arrayList);
}
回答1:
In Java, you cannot directly write the executable statements in class. You need to move your code in a method. Only variables declaration is allowed outside the method/blocks. Just for the sake of testing, ,move everthing to main method. Try this:
public class Orders {
public static void main(String argsp[]) {
String alphabet = "abc";
ArrayList<String> list = new ArrayList<String>();
int n = alphabet.length();
Random rand = new Random();
for (int i = 0; i < 10000; i++){
char a = alphabet.charAt(rand.nextInt(n));
char b = alphabet.charAt(rand.nextInt(n));
char c = alphabet.charAt(rand.nextInt(n));
String s = Character.toString(a) + Character.toString(b) + Character.toString(c);
if(list.indexOf(s) == -1){
list.add(s);
}
}
System.out.println(list);
}
}
Note: system.out.println(arrayList);
will throw an error because there is no varaible called arrayList
, i think it should be replaced with variable list
. Also system
should be System
.
回答2:
In java you can't simply code loops and other actions as part of the class definition, but rather as method/constructor/block definitions inside the class
for (int i = 0; i < 10000; i++){
char a = alphabet.charAt(rand.nextInt(n));
char b = alphabet.charAt(rand.nextInt(n));
char c = alphabet.charAt(rand.nextInt(n));
String s = Character.toString(a) + Character.toString(b) + Character.toString(c);
if(list.indexOf(s) == -1){
list.add(s);
}
}
system.out.println(arrayList);
So this code should be in method/constructor/block.
For example in method
public void printList(){
for (int i = 0; i < 10000; i++){
char a = alphabet.charAt(rand.nextInt(n));
char b = alphabet.charAt(rand.nextInt(n));
char c = alphabet.charAt(rand.nextInt(n));
String s = Character.toString(a) + Character.toString(b) + Character.toString(c);
if(list.indexOf(s) == -1){
list.add(s);
}
}
system.out.println(arrayList);
}
Please refer this link for more details.
回答3:
You just need to write your code inside the main function.
You just miss the main function.
Your code
import java.util.*;
public class Orders {//Include main function
String alphabet = "abc";
ArrayList<String> list = new ArrayList<String>();
int n = alphabet.length();
Random rand = new Random();
for (int i = 0; i < 10000; i++){
char a = alphabet.charAt(rand.nextInt(n));
char b = alphabet.charAt(rand.nextInt(n));
char c = alphabet.charAt(rand.nextInt(n));
String s = Character.toString(a) + Character.toString(b) + Character.toString(c);
if(list.indexOf(s) == -1){
list.add(s);
}
}
system.out.println(arrayList);
}
Correct code
package testprob;
import java.util.*;
public class testprob {
public static void main(String arrg[]) {//you need to add main function
String alphabet = "abc";
ArrayList<String> list = new ArrayList<String>();
int n = alphabet.length();
Random rand = new Random();
for (int i = 0; i < 10000; i++){
char a = alphabet.charAt(rand.nextInt(n));
char b = alphabet.charAt(rand.nextInt(n));
char c = alphabet.charAt(rand.nextInt(n));
String s = Character.toString(a) + Character.toString(b) + Character.toString(c);
if(list.indexOf(s) == -1){
list.add(s);
}
}
System.out.println(list);
}
}
回答4:
I was getting a error "invalid token 'manage()..." when i coded as below .That is when i wrote my code directly to a class.
//before
public class test{
WebDriver driver=new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.get("http://http://www.extjs-tutorial.com/live-examples/extjs4/CRUD-in-Form-model/default.htm");
}
'
After i moved my code to a method , it worked
//after
public class test{
public void setup(){
WebDriver driver=new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.get("http://http://www.extjs-tutorial.com/live-examples/extjs4/CRUD-in-Form-model/default.htm");
}}
回答5:
The reason you get a syntax error in that code is that you have an extra bracket. to the code above the error!
来源:https://stackoverflow.com/questions/18836404/syntax-error-on-token-expected-after-this-token-in-random-string-creator