我是编码新手。我花了好几个小时尝试调试这个。
我的程序应该询问用户他们想要的最大数字(最多 100),然后生成 10 个随机加法问题,用户必须检查它是否正确,然后告诉用户他们正确了多少个。
这是我的主要功能,它将所有内容组合在一起。我收到错误:
method GenerateArray in class ArrayGenerator cannot be applied to given types; ProblemGenerator Problems = new ProblemGenerator(randomnumbers.GenerateArray());
但是 ArrayGenerator 类中的“GenerateArray”方法返回一个 ArrayList ,而 ProblemGenerator 类中的“GenerateProblems”方法接受 ArrayList 作为参数。除了 Main 之外,没有任何函数返回类型为 void。我正在使用 https://repl.it 作为 IDE。
import java.util.ArrayList;
import java.util.Scanner;
class Test{
//Main Function
public static void main (String[] args){
//Declare Array List, Scanners and Variables
Scanner answer = new Scanner(System.in);
ArrayList <Integer> List = new ArrayList<>();
String name;
int highestnum;
int score;
String result;
//Display Instructions to user
//Create instance of UserInput
UserInput Exam = new UserInput();
//Get name and store it in String
name = Exam.userName();
//Get highest number and store it in highestnum
highestnum = Exam.gethighestNum();
//Generate Array of Random Numbers
//Create instance of ArrayGenerator class
ArrayGenerator randomnumbers = new ArrayGenerator(highestnum);
//Create array of random numbers and assign it to List
//Ask user to enter numbers in the array and check if their answer is correct
//Create instance of ProblemGenerator class
ProblemGenerator Problems = new ProblemGenerator(randomnumbers.GenerateArray());
//Call Method to Generate Problems and assign correct answers to score
score = Problems.GenerateProblems();
//Display user score in a string
System.out.println(Problems.result(score));
}
}
这是我的用户输入类
import java.util.Scanner;
//Declare Class & Scanner
class UserInput{
Scanner input = new Scanner(System.in);
// userName function
public String userName(){
// Ask user to enter name and store it in variable
System.out.println("Please enter your name");
String name = input.nextLine();
return name;
}
//gethighestNum function
public int gethighestNum(){
int userInput;
// Keep asking the user until a valid number is entered
while (true) {
System.out.print("Enter a number (greater than 10 and less than 100): ");
// Check if the input is an integer
if (input.hasNextInt()) {
userInput = input.nextInt();
// Check if the number is within the desired range
if (userInput > 10 && userInput < 100) {
System.out.println("You entered: " + userInput);
break; // Exit the loop since a valid number is entered
} else {
System.out.println("Invalid input. Please enter a number greater than 10 and less than 100.");
}
} else {
// Consume the invalid input to avoid an infinite loop
System.out.println("Invalid input. Please enter a valid number.");
input.next();
}
}
// Close the scanner to prevent resource leaks
input.close();
return userInput;
}
}
我的 ArrayGenerator 类生成一个包含 20 个随机数的 ArrayList,并接受一个参数来设置最大数字。它返回 ArrayList。
import java.util.ArrayList;
import java.util.Random;
class ArrayGenerator{
//Create varibles and ArrayList and Random
int highestnum;
ArrayList <Integer> randomnumberArray = new ArrayList<>();
Random random = new Random();
//Constructor
public ArrayGenerator(int highestnum){
this.highestnum = highestnum;
}
//GenerateArray function
public ArrayList<Integer> GenerateArray(int highestnum){
//Loop to generate 20 random numbers
for (int i = 0; i < 20; i++) {
int randomInt = random.nextInt(highestnum);
randomnumberArray.add(randomInt);
}
return randomnumberArray;
}
}
我的 ProblemGenerator 类不断从数组中选择两个数字,然后将其作为加法问题写出来,然后检查用户的答案是否正确,并计算正确的数量。
import java.util.ArrayList;
import java.util.Scanner;
class ProblemGenerator
{
//Declare ArrayList & Scanner & Variables
ArrayList<Integer> List = new ArrayList<>();
Scanner ans = new Scanner(System.in);
int answer; //Variable to check if user answer is correct
int k; //Variable to count number of correct answers
//Constructor
public ProblemGenerator(ArrayList<Integer> List)
{
this.List = List;
}
// Method to Generate Problems and check Answers
public int GenerateProblems(ArrayList<Integer> List)
{
//Run 10 times
for (int j = 1; j < 11; j++)
{
// Print two number from the ArrayList and ask the user to add them together
System.out.println(" " + List.get(j) + "+" + List.get(List.size() - j) + "= ?");
//Take user answer
answer = ans.nextInt();
//Check if correct
if (answer == (List.get(j) + List.get(List.size() - j)))
{
// If correct increment k
k++;
} //end k
} // end j
//return k
return k;
}
public String result(int k)
{
String finalresult = "You answered" + k + "questions correctly ";
return finalresult;
}
}
我尝试将返回的ArrayList分配给我在主函数中创建的另一个ArrayList,但仍然出现错误。
事实上,你有两个编译错误。
第一个是,由于调用
randomnumbers.GenerateArray()
时没有使用 int 作为参数。这是因为, ArrayGenerator
的构造函数采用了它,而你没有用它做任何事情。也许您可以从构造函数中删除它并将其传递给GenerateArray 方法,或者从GenerateArray 方法中删除参数并重用向构造函数提供的值。无论哪种方式都可以。
下一个问题是下面两行:
problems.GenerateProblems()
也需要一个参数。在本例中,它是一个整数列表。
除此之外,我建议您: