Java - student behöver hjälp med kod

Permalänk
Medlem

Java - student behöver hjälp med kod

Hej,

Jag sitter med inlämningsuppgifter till prog1 och har fastnat, tyvärr är det inte så lätt att få hjälp via handledningen från skolan pga högt tryck.
Målet är att skapa ett hundregister och de aktuella uppgifterna handlar om att sortera hundarna efter svanslängd.
Den första metoden som ska skrivas är för att byta plats på två hundar. Den andra uppgiften är att använda en färdig metod från klassbiblioteket. Dessa två är jag rätt säker på att jag har fått rätt.
Sen ska man skriva en metod för att jämföra två hundar och se vilken som ska komma först i den sorterade listan. Det ska vara svanslängd från minst till störst och om två hundar har samma så ska de sorteras efter namn.
Nr 3 är att skriva en metod som hittar den minsta hunden, här vet jag inte alls hur jag ska göra och tillsist ska man implementera själva sorteringsalgoritmen med hjälp av de redan skrivna metoderna.

Jag har kommit såhär långt men har nu fastnat. Kan någon ge tips på vad jag behöver göra för att komma vidare?

import java.util.ArrayList; import java.util.Collections; import java.util.List; @UnderTest(id = "U7.6") public class AssignmentSevenPointSix { @UnderTest(id = "dogs") private ArrayList<Dog> listOfDogs = new ArrayList<>(); @UnderTest(id = "U7.6.1.1") public void swapDogs(int x, int y) { Dog swap = listOfDogs.get(x); listOfDogs.set(x, listOfDogs.get(y)); listOfDogs.set(y, swap); } @UnderTest(id = "U7.6.1.2") public void swapDogs2(int x, int y) { Collections.swap(listOfDogs, x, y); } @UnderTest(id = "U7.6.2") public void compareDogs(Dog dog1, Dog dog2) { for (int i = 1; i < listOfDogs.size(); i++) { Dog sort = listOfDogs.get(i); int j = i; while (j > 0 && listOfDogs.get(j - 1).getTailLength() > sort.getTailLength()) { listOfDogs.set(j, listOfDogs.get(j - 1)); j--; } listOfDogs.set(j, sort); } } @UnderTest(id = "U7.6.3") public void findSmallestDog(int i){ } }

Tack på förhand!

Permalänk
Medlem

Tillägg - koden var indenterad när jag lade in den, vet inte varför det inte fastnade vid skapandet av inlägget..

Permalänk
Medlem

använd [code] i forumet så blir det formaterat.

Permalänk
Medlem
Skrivet av Xcorp:

använd [code] i forumet så blir det formaterat.

Tack för hjälpen!

Permalänk
Medlem

Du får nog backa lite, för compareDogs är inte rätt. Den ska ju bara jämföra två hundar, men nu ignorerar den helt hundarna som skickas in som argument och verkar istället försöka sortera listan med hundar.

För att hitta den "minsta" hunden så är det bara att gå igenom listan med hundar och hålla reda på den minsta hunden som påträffats. D.v.s. börja med den första, den är minst hittills eftersom den är ensam. Om nästa hund i listan är mindre så blir den den nya minsta hunden, o.s.v.

Permalänk
Medlem

sortering i java

Här kan du läsa lite om sortering i Java, jag skulle använda det under punkt 8 men vore jättebra om du tar till dig hela.

Permalänk
Medlem

Ah, ännu ett relevant och för arbetslivet förberedande exempelcase i skolan.

Permalänk
Medlem

Tack för återkopplingen ni som har svarat, lyckades lösa denna kod!

Permalänk
Skrivet av rackes156:

Massa dåligt typsatt och fetstilt text

Du får nog vara mer tydlig med vad du faktiskt vill att koden ska göra. Varje heltal motsvarar en unik binär utveckling och vice versa.

Permalänk
Skrivet av rackes156:

BinaryToInt.java:8: error: <identifier> expected public static int binToInt(boolean[] ArrayOfBoolean, ElementBoolean){ ^ 1 error

Länge sedan jag programmerade något i Java, men jag har för mig att språket kräver att man specificerar vad för typ ett objekt har. Så du bör nog skriva typ `boolean ElementBoolean` istället för bara `ElementBoolean`.

Permalänk
Medlem

Information från chatGPT

Citat:

There are a few things that need to be clarified before debugging the code.

First, the class is annotated with @UnderTest, which suggests that this code is part of a testing framework. Without knowing the details of the testing framework, it's difficult to determine the exact purpose of the code.

Second, the method findSmallestDog is empty, so it's impossible to determine whether there are any issues with it.

That being said, there are a couple of potential issues with the code:

The compareDogs method is attempting to sort the list of dogs using an insertion sort algorithm. However, the loop is starting at index 1, which means that the first dog in the list is never compared with any other dog. To fix this, change the loop condition to for (int i = 1; i < listOfDogs.size(); i++).

The compareDogs method is not actually comparing dog1 and dog2, which are passed as parameters, but rather sorting the list of dogs that are stored in the listOfDogs field. If the intention is to compare dog1 and dog2, the code needs to be modified accordingly.

Other than these potential issues, the code appears to be syntactically correct.

Skulle vara intressant om det stämmer, bekräfta gärna om det är förslaget som är problemet

Permalänk
Medlem
Skrivet av skinnis:

Information från chatGPT

Skulle vara intressant om det stämmer, bekräfta gärna om det är förslaget som är problemet

Tråden är från förra året så TS är förhoppningsvis klar med programmering 1.

Kan svara på frågorna:
1. Vilket test framework som används spelar inte så stor roll eftersom koden ska vara giltig Java i vilket fall.
2. Vi kan visst veta om det är något fel med findSmallestDog: den är tom så den kommer inte göra något
3. Felet som pekas ut rättas inte heller med kod raden som ges däremot om den gett int i = 0 så hade den i alla fall försökt, felet ligger i while(j > 0 & ...) Eftersom j då måste vara större än 0 så kommer stanna på 1, rätt svar är j >= 0 och jag skulle flytta ner jämförelsen av svansarna i loopen och byta där. Nu antas det att de ska byta även om j = 0 kanske inte är mindre och den byter inte plats den skriver bara över hunden på plats j.
4. Rätt, den försöker sortera listan men bör bara jämföra dog1 och dog2 enligt namnet på methoden.