【问题标题】:Java input char to array that is accessed from another classJava 输入字符到从另一个类访问的数组
【发布时间】:2018-07-15 23:33:21
【问题描述】:

为了透明,这是我正在上的一门课的作业。我不希望其他人为我做这件事,我只是要求在正确的方向上稍微推动一下。在此作业中,我需要对用户参加的测试进行评分。答案键已给出。我坚持的事情是如何将 char 值输入到数组 Driver.setAnswerSet 中。我已经广泛搜索了课堂上给出的材料,并且在 Eclipse 中尝试了许多不同的可能解决方案来解决我遇到的这个问题。确切地说,我不确定如何将值输入到数组中。将值放入在同一个类中初始化的常规数组是我可以做的事情,但是添加调用数组正在成为我的结束。当从另一个类调用它时,我将如何将来自用户的输入放入有问题的数组中?我当前遇到的错误是“SU2018LAB6_DriverCandidate_Wayne 类型中的方法 setAnswerSet(char[]) 不适用于参数 (char)。”同样,我所要求的只是一条建议或在这里朝着正确的方向前进。任何帮助或帮助将不胜感激。如果我问的是一个愚蠢的问题,我也真的很抱歉。

这是我拥有的数据类文件。

public class SU2018LAB6_DriverCandidate_Wayne {

    private char[] keySet = {
        'A','C','B','B','D','B','C','D','A','B',
        'C','A','B','C','A','B','A','C','A','D',
        'B','C','A','D','B'
    };

    //the answer key to be graded off of
    private char[] answerSet;
    //the answer key that is inputted by the user
    private String lastName;
    private String firstName;
    private String socialNumber;
    private String phone;
    private String address;


    //the getters and setter made by Eclipse
    public char[] getKeySet() {
        return keySet;
    }
    public void setKeySet(char[] keySet) {
        this.keySet = keySet;
    }
    public char[] getAnswerSet() {
        return answerSet;
    }
    public void setAnswerSet(char[] answerSet) {
        this.answerSet = answerSet;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getSocialNumber() {
        return socialNumber;
    }
    public void setSocialNumber(String socialNumber) {
        this.socialNumber = socialNumber;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

项目的驱动类:

public static void main(String[] args) {
    SU2018LAB6_DriverCandidate_Wayne Driver = new SU2018LAB6_DriverCandidate_Wayne();
    Scanner keyboard = new Scanner(System.in);
    int test = 1;
    int i;
    int score;

    while (test == 1) {
        System.out.println("Welcome to the Online Driving Test");
        System.out.println("To begin, enter your last name");
        Driver.setLastName(keyboard.nextLine());
        System.out.println("Enter your first name");
        Driver.setFirstName(keyboard.nextLine());
        System.out.println("Enter your SS number");
        Driver.setSocialNumber(keyboard.nextLine());
        System.out.println("Enter your phone number");
        Driver.setPhone(keyboard.nextLine());
        System.out.println("Enter your address");
        Driver.setAddress(keyboard.nextLine());
        //for (i = 0; i < Driver.getKeySet().length; i++) {
        //    System.out.println(Driver.getKeySet()[i]);
        //}
        System.out.println("Driver License Test");
        System.out.println("There are 25 multiple choice questions");
        System.out.println("You have to get at least 20 questions correct to pass");
        System.out.println("---------------------------------");


        // This is the area that I am having trouble with
        for (i = 0; i < Driver.getKeySet().length; i++) {
            System.out.println("Question " + (i + 1) + ": ");
            Driver.setAnswerSet(keyboard.next().charAt(0));
        }
        for (i = 0; i < Driver.getKeySet().length; i++) {
            System.out.println(Driver.getAnswerSet()[i]);
        }
    }
}

【问题讨论】:

  • 扫描仪的next()方法返回什么?对于Driver.setAnswerSet() 方法 - 方法参数的类型是什么?
  • 尽量减少代码。例如,电话号码、地址、社交号码、姓氏和名字与此问题无关。此外,请尽量遵守 Java 命名约定:变量名应始终以小写字母开头(例如,Driver 应为 driver)。

标签: java arrays methods


【解决方案1】:

错误“SU2018LAB6_DriverCandidate_Wayne 类型中的方法 setAnswerSet(char[]) 不适用于参数 (char)”告诉您 setAnswerSet 方法需要一个字符数组,而不是单个字符。该方法让您用传入的新引用覆盖对数组的引用。

您有两个选择:在 SU2018LAB6_GradingDLTest_Wayne 中创建一个包含答案的数组并将其“设置”为新的 answerSet,或者在 SU2018LAB6_DriverCandidate_Wayne 中初始化 answerSet 并“获取”它,以便您可以开始填写答案。

正如当前编写的那样,您不能只获取 answerSet 并对其进行更新,因为该数组尚未初始化并且只是一个空引用。

【讨论】:

  • 我明白你在说什么,我想。基本上我想在课堂上创建一个新的“answerSet”?我无法设置 setAnswerSet 值的原因是因为我试图将整个数组推入单个字符,同时数组为空?
  • setAnswerSet 方法不设置 answerSet 数组中的值。 setAnswerSet 用于将 answerSet 数组替换为完全不同的数组。它接受一个数组作为参数,并将传递给它的数组分配给 answerSet 变量。所以一种解决方案是创建一个数组,用答案填充它,然后将该数组传递给 setAnswerSet。
猜你喜欢
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2021-07-25
  • 1970-01-01
  • 2012-05-03
  • 2015-05-20
相关资源
最近更新 更多