Varför min javakod visar warning.. missing return statement??

Trädvy Permalänk
Medlem
Registrerad
Apr 2016

Varför min javakod visar warning.. missing return statement??

#16124061
Den var min först fråga, men svar hjälpte inte mig T_T
Så jag har ändrat lite koden..
men det fortfarande visar error

class listorA_{ public int num; public listorA_(int värde){ int num = värde; } public boolean ärSorterat (LinkedList<Integer> l){ Integer prev = null; for(Integer num : l) { prev = 1; if(prev != null && prev > num) return false; else{ return true; } } } ///// Här visar warning.. missing return statement }

Som du kan se i koden jag har returnerat både false och true men programm visar missing return statement
Jag har provat att öppna och stänga alla { och } men de fungerade inte.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2013

@ProgrammeringElev:

Du har lagt båda returnfunktionerna i en for-loop. Dvs. det är inte garanterat att något kommer returneras.

MAIN: AMD Ryzen 1700x@4GHz | ASUS PRIME B350-PLUS | Corsair 16GB | Sapphire R9 390 | Qnix QX2710 115Hz
SRV1: 2x Intel Xeon E5450 | 32GB ECC | 6x 146GB RAID 6 | CentOS
SRV2: 1x Intel Xeon E5450 | 6GB ECC | 6x 146GB RAID 6 | pfSense

"I can show you a real Tunnel Snake, Amata."

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av Zawwe:

@ProgrammeringElev:

Du har lagt båda returnfunktionerna i en for-loop. Dvs. det är inte garanterat att något kommer returneras.

Går det inte bra om man lägger två returnfunktionerna i en for-loop?

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

I framtiden, lägg din kod mellan [​​code][/code] så bevaras formateringen. Det blir mycket lättare att läsa kod då. D.v.s. så här:

class listorA_ { public int num; public listorA_(int värde) { int num = värde; } public boolean ärSorterat(LinkedList<Integer> l) { Integer prev = null; for(Integer num : l) { prev = 1; if(prev != null && prev > num) { return false; } else { return true; } } } ///// Här visar warning.. missing return statement }

Skrivet av ProgrammeringElev:

Går det inte bra om man lägger två returnfunktionerna i en for-loop?

Vad returnerar funktionen om listan l är tom?

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av perost:

I framtiden, lägg din kod mellan [​​code][/code] så bevaras formateringen. Det blir mycket lättare att läsa kod då. D.v.s. så här:

class listorA_ { public int num; public listorA_(int värde) { int num = värde; } public boolean ärSorterat(LinkedList<Integer> l) { Integer prev = null; for(Integer num : l) { prev = 1; if(prev != null && prev > num) { return false; } else { return true; } } } ///// Här visar warning.. missing return statement }

Aha Tack!! Jag har registrerat nyligen så jag vet inte så mycket om funktionerna som sweclockers har

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003
Skrivet av ProgrammeringElev:

Går det inte bra om man lägger två returnfunktionerna i en for-loop?

Vilken väg tar koden om listan är tom?

Edit: för sent...

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av perost:

I framtiden, lägg din kod mellan [​​code][/code] så bevaras formateringen. Det blir mycket lättare att läsa kod då. D.v.s. så här:

class listorA_ { public int num; public listorA_(int värde) { int num = värde; } public boolean ärSorterat(LinkedList<Integer> l) { Integer prev = null; for(Integer num : l) { prev = 1; if(prev != null && prev > num) { return false; } else { return true; } } } ///// Här visar warning.. missing return statement }

Vad returnerar funktionen om listan l är tom?

Uppgiften är
public static boolean ärSorterat(LinkedList<Double> l)
som returnerar true eller false beroende på om listan är sorterad eller inte.
I main-metoden ska inläsning till listan göras samt anrop till metoden ärSorterat och utskrift om listan är sorterat eller inte.

Men han sade det är ok om jag gör Integer

Exempel som vi gjorde i klassen var så

public class Inlämning_test { public static void main(String[] args) { System.out.println("Skriv in några decimaltal till listan, avsluta med \\n;"); Scanner sc = new Scanner(System.in); LinkedList<Integer> I = new LinkedList<Integer>(); while(sc.hasNextInt()) I.add(sc.nextInt()); System.out.print("Talen är"); for(Integer tal: I){ if(I.contains(tal)) System.out.print(tal + " "); } System.out.flush(); } }

Först tänkte att jag ska använda boolean som instansmetod.. och jag fick svar att jag ska göra så

public static boolean ärSorterat(LinkedList<Integer> l) Integer prev = null; // Anta 1-99 sortering, stigande for(Integer num : l) { if(prev != null && prev > num) { return false; } prev = l; } return true;

Det funkade inte och annat svar som jag har fått jag förstod inte #16124061

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av Dalton Sleeper:

Vilken väg tar koden om listan är tom?

Edit: för sent...

Jag tror du kan kolla under
Jag har skirivit alla informationer som jag vet

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
Skrivet av ProgrammeringElev:

Jag tror du kan kolla under
Jag har skirivit alla informationer som jag vet

Vi frågade inte vad instruktionerna sa att funktionen ska returnera, utan vad din funktion just nu returnerar om listan är tom. Svaret är att din funktion just nu inte returnerar någonting när listan är tom (for-loopen körs inte då), vilket är orsaken till att kompilatorn ger en varning.

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av perost:

Vi frågade inte vad instruktionerna sa att funktionen ska returnera, utan vad din funktion just nu returnerar om listan är tom. Svaret är att din funktion just nu inte returnerar någonting när listan är tom (for-loopen körs inte då), vilket är orsaken till att kompilatorn ger en varning.

Aha! Den kapitel som jag läser nu är listor
Så jag vill returnera om talet som har jag skrivit är mindre än föregående tal, boolean ska returnera false

Jag menar om vi gör så:
3
4
5
6
boolean ska returnera true

men om jag gör så:
3
4
5
2
boolean ska returnera false

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003
Skrivet av ProgrammeringElev:

Jag menar om vi gör så:
...
boolean ska returnera true

men om jag gör så:
...
boolean ska returnera false

och det tredje fallet?

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av Dalton Sleeper:

och det tredje fallet?

Förlåt, Jag har inte förstått vilket tredje fall menar du
Jag har tänkt om bara dessa två ..

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003
Skrivet av ProgrammeringElev:

Förlåt, Jag har inte förstått vilket tredje fall menar du
Jag har tänkt om bara dessa två ..

Som vi nämnt ovan så kan listan vara tom, läs funktionen uppifrån och ner, tänk dig att du inte har några element alls i listan, vart hamnar du då?

Edit: det ser ut som du behandlar det i din ärSorterat ovan, frågan är om du förstår varför det ser ut som det gör.

public static boolean ärSorterat(LinkedList<Integer> l) { ... return true; }

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av Dalton Sleeper:

Som vi nämnt ovan så kan listan vara tom, läs funktionen uppifrån och ner, tänk dig att du inte har några element alls i listan, vart hamnar du då?

Edit: det ser ut som du behandlar det i din ärSorterat ovan, frågan är om du förstår varför det ser ut som det gör.

public static boolean ärSorterat(LinkedList<Integer> l) { ... return true; }

Den kod var en svar från min annan tråd
Jag vet inte själv vad det exakt betyder
Kanske på grund av inte repetera Linkedlist en gång till?
Jag förstår ingenting om listor...
Jag fick godkänt på alla prov och föregående kapitel arv det var super lätt
Men listor ej..

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

@ProgrammeringElev: Det har egentligen inte med listor att göra, utan att innehållet i for-loopen aldrig kommer att köras, dvs exekveringen fortsätter efter loopen och där returneras ingenting, vilket var vad din kompilator klagade på.

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Plats
Götet
Registrerad
Okt 2013

Innan for-loopen, lägg till 'if listan == null, return false'.

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

Varför ens ha en for-loop om du returnerar efter första elementet i den? Det är feltänk.

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003
Skrivet av talonmas:

Innan for-loopen, lägg till 'if listan == null, return false'.

Den kan fortfarande vara skapad och tom på samma gång

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |