Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从小程序创建类_Java_Arrays_Class_Syntax Error - Fatal编程技术网

Java 从小程序创建类

Java 从小程序创建类,java,arrays,class,syntax-error,Java,Arrays,Class,Syntax Error,我做了一个选择题小程序,如图所示 import java.util.Arrays; import java.util.Scanner; public class logic { public static void main(String[] args) { String question = "Welche Fabe hat der Frosch?"; //Your Question here //Possible Answers St

我做了一个选择题小程序,如图所示

    import java.util.Arrays;
    import java.util.Scanner;

    public class logic  {

public static void main(String[] args) {

    String question = "Welche Fabe hat der Frosch?"; //Your Question here

    //Possible Answers
    String a = "Gelb";
    String b = "Rot";
    String c = "Grün";

    String correct = "c"; //Right Answer

    String [] arr = new String[5];

    arr[0] = question;
    arr[1] = a;
    arr[2] = b;
    arr[3] = c;
    arr[4] = correct;

    System.out.println(arr[0] + "\n");
    System.out.println("Answer a: " + arr[1]);
    System.out.println("Answer b: " + arr[2]);
    System.out.println("Answer c: " + arr[3] + "\n");

    int i = 0;
    while (i != 1) {
    Scanner userin = new Scanner(System.in);

    System.out.println("Type a,b,c for correct answer.\n");

    String selected = userin.next();

    if (selected.equals(correct)) {
        i = 1;
        System.out.println("\nCorrect!");
    }else {
        System.out.println("Try again");
    }
    }
}
}
我想我可以基于此创建一个类。这就是问题的开始

这就是我目前得到的

import java.util.Scanner;

public class MultipleChoice {

    private String question, a, b, c, correct;

    public void setQuestion(String question) {
      this.question = question;
    }

    public void setA(String a) {
      this.a = a;
    }

    public void setB (String b) {
      this.b = b;
    }

    public void setC (String c) {
      this.c = c;
    }

    public void setCorrect (String correct) {
        this.correct = correct;
    }



    String[] arr = new String[5];

    arr[0] = question;
    arr[1] = a;
    arr[2] = b;
    arr[3] = c;
    arr[4] = correct;

    System.out.println(arr[0] + "\n");
    System.out.println("Answer a: " + arr[1]);
    System.out.println("Answer b: " + arr[2]);
    System.out.println("Answer c: " + arr[3] + "\n");

    int i = 0;
    while (i != 1) {
        Scanner userin = new Scanner(System.in);

        System.out.println("Type a,b,c for correct answer.\n");

        String selected = userin.next();

        if (selected.equals(correct)) {
            i = 1;
            System.out.println("\nCorrect!");
        }else {
            System.out.println("Try again");
        }
    }
}
}
当我尝试创建数组时,我得到错误“Syntax error on token”;“,{此标记后应为”

我对Java比较陌生


提前感谢

问题在于类的主体中有可执行语句;这些可执行语句应该只包含在方法主体中。请参阅


例如,对System.out.println的调用需要位于此类上可在其他地方调用的方法内部。

类中的以下代码段位于任何方法或构造函数外部:

String[] arr = new String[5];

arr[0] = question;
arr[1] = a;
arr[2] = b;
arr[3] = c;
arr[4] = correct;

System.out.println(arr[0] + "\n");
System.out.println("Answer a: " + arr[1]);
System.out.println("Answer b: " + arr[2]);
System.out.println("Answer c: " + arr[3] + "\n");

int i = 0;
while (i != 1) {
    Scanner userin = new Scanner(System.in);

    System.out.println("Type a,b,c for correct answer.\n");

    String selected = userin.next();

    if (selected.equals(correct)) {
        i = 1;
        System.out.println("\nCorrect!");
    }else {
        System.out.println("Try again");
    }
}
这会导致出现错误,因为每个语句都必须包含在Java中的方法或构造函数中

让我们尝试将此代码放在一个方法中:

public void ask() {
    String[] arr = new String[5];

    arr[0] = question;
    arr[1] = a;
    arr[2] = b;
    arr[3] = c;
    arr[4] = correct;

    System.out.println(arr[0] + "\n");
    System.out.println("Answer a: " + arr[1]);
    System.out.println("Answer b: " + arr[2]);
    System.out.println("Answer c: " + arr[3] + "\n");

    int i = 0;
    while (i != 1) {
        Scanner userin = new Scanner(System.in);

        System.out.println("Type a,b,c for correct answer.\n");

        String selected = userin.next();

        if (selected.equals(correct)) {
            i = 1;
            System.out.println("\nCorrect!");
        }else {
            System.out.println("Try again");
        }
    }
}
现在,无论何时调用
ask
,代码都将被执行

以下是如何在
main
方法中使用
multipleechoice
类:

MultipleChoice mc = new MultipleChoice("How many months are there in a year?");
mc.setA("11");
mc.setB("12");
mc.setC("13");
mc.setCorrect("b");
mc.ask();

你能删除所有的代码吗,除了错误所在的代码(可能两边都有几行)?请参阅:另外,请格式化您的代码。这可能足以向您显示答案。代码格式化。错误非常简单。一半代码在函数之外。您应该格式化代码,它将帮助您找到错误提示:
arr
可以声明为
String[]arr={question,a,b,c,correct}
。但是看起来你应该定义一个
问题
类,因为问题、可能的答案和实际答案在语义上是不同的,因此不应该只是相互插入。(或者直接使用变量,不需要数组或类)非常感谢你的确切回答。我在这里学到了一些东西:)以后我会注意发布干净的代码。@ SOM3K如果你认为我的答案回答你的问题,请考虑通过点击那个标记来接受它。