【发布时间】:2014-05-14 22:20:18
【问题描述】:
我对数组和方法还很陌生,而且我已经通过几个程序看到这个错误反复出现:error '[' expected.
在每种情况下,它似乎都会在我调整其他东西时自行纠正,但在这种特殊情况下,我完全被难住了。
顺便说一句,我正在使用几种方法和数组来创建一个测验(在你问之前,是的,这是一个作业,我同意,一个列表是处理这些数据的更好方法 - 但这不是一个选项)。
我可能没有在方法之间正确传递数组,因为我在这个过程中有点糊涂。据我了解,为了在方法之间发送/接收(即导入/导出)数组或其他变量,我必须在方法头参数中声明该变量/数组。
import java.util.Scanner;
public class H7pseudo
{
public static void main(String[] args)
{
//call getAnswerkey method
getAnswerkey(answerkey[i]);
//call getAnswers method
getAnswers(answers[i]);
//call passed method? necessary or no?
boolean passed = passed(answerkey[i], answers[i], qMissed[i], points);
//Print results of grading
if (passed)
{
System.out.println("Congratulations! You passed.");
}
else
{
System.out.println("Try again, sucka. You FAILED.");
}
//call totalPoints
totalIncorrect(points);
//call questionsMissed
questionsMissed(qMissed[i]);
}
//get answer key (create answerkey array & export)
public static void getAnswerkey(answerkey[i])
{
//create answerkey array here
char[] answerkey;
//determine number of questions (indices)
answerkey = new char[20];
//input values (correct answers) for each index
//for our purposes today, the answer is always 'c'.
for (int i = 0; i <=20; i++)
{
answerkey[i] = 'c';
}
}
//get student answers (create answers array & export)
public static void getAnswers(answers[i])
{
//initialize scanner for user input
Scanner scan = new Scanner(System.in);
//create answer array here
char[] answers;
//determine number of questions (indices)
answers = new char[20];
//prompt for user input as values of each index
for (int i = 0; i <= 20; i++) {
answers[i] = scan.nextChar();
}
}
//grade student answers (import & compare index values of arrays:answers&answerkey
//create & export qMissed array
public static boolean passed(answerkey[i], answers[i], qMissed[i], points)
{
int points = 0;
//create new array: qMissed
boolean[] qMissed;
//determine number of questions to be graded
qMissed = new boolean[20];
//initialize values for array
for (int i = 0; i <= 20; i++) {
qMissed[i] = false;
}
//cycle through indices of answerkey[i] & answers[i];
for (int i = 0; i =< 20; i++)
{
if (answers[i] == answerkey[i])
{
correct = true;
points = points+1;
qMissed[i] = true;
}
else {
qMissed[i] = false;
}
}
//evaluate whether or not the student passed (15+ correct answers)
if (points >= 15)
{
passed = true;
}
else
{
passed = false;
}
return passed;
}
public static void totalIncorrect(points)
{
int missed = 20 - points;
System.out.println("You missed " + missed + " questions.");
}
public static void questionsMissed(qMissed[i])
{
// for each index of the array qMissed...
for (int i = 0; i < qMissed.length; i++)
{
//...print correct and false answers.
system.out.println(i + ": " + qMissed[i] + "\n");
}
}
}
【问题讨论】:
-
你觉得
public static void getAnswerkey(answerkey[i])应该怎么做? -
您可能需要考虑循环进行初始化,而不是那些大量的初始化块......
-
@Sotirios Delimanolis:这个想法是 getAnswerkey 建立一个数组来保存每个索引(问题)的正确值(答案)。我把它放在一种保持事物有条理和整洁的方法中。另外,在我缺乏经验的情况下,我对在“公共主”中的方法之间放置一个我想共享的数组有点怀疑......
-
@user3580294 天哪,你让我脸红了。我不敢相信我错过了! :-\ 感谢您的明智建议!
-
我不是这个意思。我的意思是声明本身。解构每个部分。
public是什么?static是什么?void是什么?括号之间的answerkey[i]是什么?你如何定义一个方法?涉及哪些部分?
标签: java arrays methods compiler-errors