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);
}
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.
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.
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);
}
}
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");
}}
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