Java 比较同一类中不同类中的两个整数
为学校做一个大作业,需要帮助解决一个问题 我们需要比较类X属性类中的两个整数,在类Y中我们有一些方法。这就是作业的结构 到目前为止,我们的守则:Java 比较同一类中不同类中的两个整数,java,arrays,class,if-statement,Java,Arrays,Class,If Statement,为学校做一个大作业,需要帮助解决一个问题 我们需要比较类X属性类中的两个整数,在类Y中我们有一些方法。这就是作业的结构 到目前为止,我们的守则: import java.util.ArrayList; public class Event { private String name; private int numberOfTries; private ArrayList<Result> resultList = new ArrayList<Result>(); p
import java.util.ArrayList;
public class Event {
private String name;
private int numberOfTries;
private ArrayList<Result> resultList = new ArrayList<Result>();
public Event(String name, int numberOfTries) {
this.name = name;
this.numberOfTries = numberOfTries;
}
public String getName() {
return name;
}
public int getNumberOfTries() {
return numberOfTries;
}
public String toString() {
return name + ", " + numberOfTries;
}
public void addResult(Participant partResult) {
int participantIndex = -1;
for (int i = 0; i < resultList.size(); i++) {
if (resultList.get(i).getParticipant().getStartNumber() == partResult.getStartNumber()) {
for (int a = 0; a < result.length; a++)
result[i] = maxAttempts();
}
}
}
}
问题是:结果不能解为变量。类型事件的maxAttempts未定义
其他类别:
public class Result {
public double[] result;
public Participant participant;
public int maxAttempts;
public int attemptsUsed;
public Result(double result, int noOfAttempts, Participant p) {
//this.result = result;
this.result = new double[noOfAttempts];
this.result[0]= result;
this.participant = p;
this.maxAttempts=noOfAttempts;
attemptsUsed++;
}
public double[] getResult() {
return result;
}
public Participant getParticipant() {
return participant;
}
public int getAttemptsUsed() {
return attemptsUsed;
}
public int getMaxAttempts() {
return maxAttempts;
}
import java.util.ArrayList;
import java.util.Scanner;
public class SportsCompetition {
private Scanner scan;
private ArrayList<Event> eventList = new ArrayList<Event>();
private ArrayList<Participant> participantList = new ArrayList<Participant>();
private int eventLoop, participantLoop, participantLoop2, participantLoop3, number, startNumber;
private Participant partResult;
private Event eventResult;
public static void main(String[] args) {
new SportsCompetition().run();
}
private void run() {
scan = new Scanner(System.in);
commandLoop();
}
private void commandLoop() {
boolean exit = false;
do {
System.out.println(
"Vad vill du göra?\n1. Lägg till gren\n2. Lägg till deltagare\n3. Ta bort deltagare\n4. Lägg till resultat\n5. Resultatlista för deltagare\n6. Resultatlista för gren\n7. Meddelande\n8. Avsluta");
String Command = scan.nextLine();
switch (Command) {
case "1":
case "add event":
addEvent();
break;
case "2":
case "add participant":
addParticipant();
break;
case "3":
case "remove participant":
removeParticipant();
break;
case "4":
case "add result":
addResult();
break;
//
// case "5":
// case "participant":
// participant();
// break;
//
// case "6":
// case "GRENNAMN":
// OKLART();
// break;
//
// case "7":
// case "message":
// message();
// break;
//
case "8":
case "exit":
exit = true;
default:
System.out.println("Fel! Mata in godkänt kommando!");
}
} while (!exit);
}
public void addEvent() {
eventList.add(new Event("Jacob", 5));
eventLoop = 0;
while (eventLoop == 0) {
eventLoop++;
System.out.print("Event name: ");
String name = scan.nextLine();
name = name.trim();
if (name.matches(".*[a-z].*")) {
for (int i = 0; i < eventList.size(); i++) {
if (eventList.get(i).getName().equals(name)) {
System.out.println("Error " + name + " has already been added\n");
return;
}
}
} else {
System.out.println("Error: name can't be empty!");
eventLoop = 0;
}
System.out.print("Attempts allowed: ");
int numberOfTries = scan.nextInt();
scan.nextLine();
while (numberOfTries <= 0) {
System.out.print("Error: too low, must be at least one attempt: ");
int numberOfTries2 = scan.nextInt();
scan.nextLine();
numberOfTries = numberOfTries;
}
eventList.add(new Event(name, numberOfTries));
System.out.println(name + " added\n");
}
}
public boolean checkString(String s) {
if (s.length() > 0 && s.matches(".*[a-z].*")) {
return true;
} else {
return false;
}
}
public void addParticipant() {
String firstName = "name";
String lastName = "name";
String team = "name";
participantLoop = 0;
while (participantLoop == 0) {
System.out.print("First name: ");
firstName = scan.nextLine();
firstName = firstName.trim();
if (checkString(firstName) == false) {
System.out.println("Error: name can't be empty!");
participantLoop = 0;
} else {
participantLoop++;
}
}
participantLoop2 = 0;
while (participantLoop2 == 0) {
System.out.print("Last name: ");
lastName = scan.nextLine();
lastName = lastName.trim();
if (checkString(lastName) == false) {
System.out.println("Error: name can't be empty!");
participantLoop2 = 0;
} else {
participantLoop2++;
}
}
participantLoop3 = 0;
while (participantLoop3 == 0) {
participantLoop3++;
System.out.print("Team: ");
team = scan.nextLine();
team = team.trim();
if (checkString(team) == false) {
System.out.println("Error: name can't be empty!");
participantLoop3 = 0;
} else {
// boolean found = false;
// for (int i = 0; i < participantList.size(); i++) {
// if (participantList.get(i).getTeam().equalsIgnoreCase(team)) {
// participantList.get(i);
// found = true;
// }
// }
//
// if (!found) {
// participantList.add(new Team);
// }
participantLoop3++;
}
}
number++;
startNumber = 99 + number;
participantList.add(new Participant(firstName, lastName, team, startNumber));
System.out.println(firstName + " " + lastName + " from " + team + " with number " + startNumber + " added.");
// printa listan för att testa
System.out.print(participantList);
}
public void removeParticipant() {
System.out.println("Skriv in siffran på deltagaren du vill ta bort: ");
int startNumber = scan.nextInt();
scan.nextLine();
boolean found = false;
for (int i = 0; i < participantList.size(); i++) {
if (participantList.get(i).getStartNumber() == startNumber) {
participantList.remove(i);
found = true;
System.out.println(startNumber + " har tagits bort!\n");
}
}
if (!found) {
System.out.println("Error: no participant with number" + startNumber + "found!\n");
}
}
public void addResult() {
System.out.println("Ange nummer på deltagare: ");
int startNumber = scan.nextInt();
scan.nextLine();
boolean numberFound = false;
for (int i = 0; i < participantList.size(); i++) {
if (participantList.get(i).getStartNumber() == startNumber) {
numberFound = true;
partResult = participantList.get(i);
}
}
if (!numberFound) {
System.out.println("Error: no participant with number " + startNumber + " found!\n");
numberFound = false;
return;
}
System.out.println("Event: ");
String name = scan.nextLine();
boolean eventFound = false;
for (int i = 0; i < eventList.size(); i++) {
if (eventList.get(i).getName().equalsIgnoreCase(name)) {
eventFound = true;
eventResult = eventList.get(i);
}
}
if (!eventFound) {
System.out.println("Error: no event with name " + name + " found!\n");
eventFound = false;
return;
}
System.out.println("Results for " + partResult.getFirstName() + " " + partResult.getLastName() + " from "
+ partResult.getTeam() + " in " + eventResult.getName() + ": ");
int result = scan.nextInt();
scan.nextLine();
}
}
import java.util.ArrayList;
public class Participant {
private String firstName, lastName, team;
private int startNumber;
private ArrayList<Result> participantResultList = new ArrayList<Result>();
public Participant(String firstName, String lastName, String team, int startNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.team = team;
this.startNumber = startNumber;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getTeam() {
return team;
}
public int getStartNumber() {
return startNumber;
}
public String toString() {
return firstName + lastName + team + startNumber;
}
public void addResult(Result result) {
participantResultList.add(result);
}
}
我不知道代码的具体逻辑,但您可以将addResult方法更改为如下内容:
public void addResult(Participant partResult) {
int participantIndex = -1;
for (int i = 0; i < resultList.size(); i++) {
Result result = resultList.get(i);
if (result.getParticipant().getStartNumber() == partResult.getStartNumber()) {
for (int a = 0; a < result.getResult().length; a++)
result.getResult()[i] = result.getMaxAttempts();
}
}
}
在事件类中,您可以执行以下操作:
result[i] = maxAttempts();
但是在Events类中,没有maxtures方法。您需要添加此方法,或者从正确的类/实例调用它
这就回答了这个问题:
类型事件的maxAttempts未定义
另一个问题:
结果不能解为变量
您正试图将该方法的结果指定为名为result的数组的元素,但在事件类中没有这样的数组,在方法中也没有作为局部变量的数组
编辑
要调用该方法,首先需要创建类结果的实例
完成此操作后,可以对其调用get方法:
example.getMaxResults();
那你就有结果了。如果要将其存储在数组中,则需要在本地或类级别创建该数组或其他变量
不管怎样,我的建议是停止做你现在正在做的事情。你写了很多你自己都不懂的代码
首先学习OO的基本原理,之后会容易得多。我想你听说过getter和setter吧?您得到了什么错误?代码中没有X和Y。不要给出看起来像错误的东西,给出实际的错误error@Zakan慢下来,请通过编辑问题给出确切的错误消息和属于它的确切代码。而不是comments@Zakan他只是告诉你SO的规则。到目前为止,您仍然发布了很少的信息,而我从您的代码中看到的,并没有多大意义。在您最初的帖子中,getStartNumber调用似乎解决了这个问题。既然代码永远不会运行,删除它,你就很好了。如果你需要它,你还需要展示你的参与者代码。总的来说,这个问题是一个很好的例子,说明不应该做什么。这个社区不是一个免费的家教服务,在那里人们会和你一起解决你的问题。所以带着一个不清楚的问题进来。。。这正是我们在这里看到的原因:其他各种各样的新手丢弃的代码只会回答你自己注意到的问题。。。通常没有帮助,但会导致其他错误。请理解,这不是编程学校。我们的想法是,你提供一个清晰明了的问题,如所概述的,实际上有很好的机会得到回答。你没有这样的方法。我的最佳猜测是,您需要在结果类public int getMaxAttempts{return maxtempts;}的实例上调用getMaxResults方法,这就是我想从结果类调用的,是的。result[i]=get.maxtures或如何正确写入。ThanksException在java.base/java.util.Scanner.throwForUnknown Source在java.base/java.util.Scanner.nextUnknown Source在java.base/java.util.Scanner.nextUnknown Source在java.base/java.util.Scanner.nextUnknown Source在SportsCompetition.addResultSportsCompetition.java:226在SportsCompetition.commandLoopSportsCompetition.java:42在SportsCompetition.runSportsCompetition.java:18在SportsCompetition.mainSportsCompetition.java:13这是我从中得到的错误消息。
example.getMaxResults();