Java 比较同一类中不同类中的两个整数

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

为学校做一个大作业,需要帮助解决一个问题

我们需要比较类X属性类中的两个整数,在类Y中我们有一些方法。这就是作业的结构

到目前为止,我们的守则:

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();