web-dev-qa-db-ja.com

トークン ";"の構文エラー、{ランダム文字列作成者でこのトークンの後に予期されます

文字a、b、cを使用してランダムな3文字の文字列を生成するコードを書いています。ランダム変数を作成した行の後に、「トークン ";"、{このトークンの後に期待される構文エラー」というエラーメッセージが表示されます(Random Rand = new Random();)。見た目が良いのに、なぜこのエラーが発生するのかわかりません。

また、次のエラーメッセージが表示されます。構文エラー。プログラムの最後の角かっこの後に「}」を挿入してClassBodyを完成させます。私はほぼすべての閉じ括弧が一致しているので、このエラーがどこから来ているのかわかりません。助けてください!!

 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);
}
7
user2615699

Javaでは、実行可能ステートメントをクラスに直接書き込むことはできません。メソッド内でコードを移動する必要があります。メソッド/ブロックの外部では、変数宣言のみが許可されます。テストのためだけに、すべてをメインメソッドに移動します。これを試して:

_  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);
        }

}
_

arrayListという変数がないため、system.out.println(arrayList);はエラーをスローします。変数listに置き換える必要があると思います。また、systemSystemである必要があります。

15
Juned Ahsan

Javaでは、ループやその他のアクションをクラス定義の一部としてコーディングするのではなく、クラス内のメソッド/コンストラクター/ブロック定義としてコーディングすることができます。

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);  

したがって、このコードはメソッド/コンストラクター/ブロックにある必要があります。
たとえばメソッドで

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

詳細については、 このリンク を参照してください。

3
Prabhaker

main function内にコードを記述する必要があります。
あなたは主な機能を見逃しているだけです。

あなたのコード

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

正しいコード

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);

}

}
2
Arslan Ahmad

以下のようにコーディングすると、「invalid token'manage()...」というエラーが発生しました。それは、コードをクラスに直接書き込んだときです。

//前

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

コードをメソッドに移動した後、それは機能しました

//後

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