Metody a návratové hodnoty – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Metody a návratové hodnoty – Java – Fórum – Programujte.comMetody a návratové hodnoty – Java – Fórum – Programujte.com

 

Petr1
~ Anonymní uživatel
3 příspěvky
27. 10. 2012   #1
-
0
-

zdravím, ač se to možná bude zdát triviální, už celý den si lámu hlavu nad následující částí kodu: 

static int castCisla (){
  int cislo = vstupCisla();                          // nactena hodnota z klavesnice, ulozeni do "cislo"
 
  for (int a = 0;a > cislo; a += 100){
  
  if (a>cislo){
  
  int vystup = (a - 100 ) - cislo;
  return (int) vystup;
    }
  }

}

Eclipse mi hlásí, že metoda musí vracet hodnotu typu Int, což my myslím vrací, podobný problém sem měl už u metody boolean.
Pochopil jsem, že hodnotu return mám nejspíš ve špatné části, ale ani po další hodině jsem na to nepřišel
předem díky za rady
 

Nahlásit jako SPAM
IP: 85.70.44.–
ingiraxo+15
Grafoman
27. 10. 2012   #2
-
0
-

pokud funkce vrací typ, třeba int, tak ho vracet musí vždy, pokud tam máš cyklus, kde se vratí hodnota pouze když něco... tak může nastat situace, že takhle podmínka neprobehne a funkce potom nemůže nic vrátit - chyba kterou ti to píše

Takže funkce musí vracet třeba i výchozí hodnotu, pokud se podmínka v cyklus nesplní

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Petr1
~ Anonymní uživatel
3 příspěvky
27. 10. 2012   #3
-
0
-

toho sem si pak taky všim, takže sem přidal do podmínky else.
Nejenže se nic nezměnilo, navíc mi to hlásí že část cyklu  " a += 100"  je "Dead code"

Nahlásit jako SPAM
IP: 85.70.44.–
dburton0
Duch
27. 10. 2012   #4
-
0
-

#3 Petr1
else neni nutny, staci nakonec vratit nejakou hodnotu (0, nebo třeba -1)

protoze ono se taky muze stat, ze cyklus vubec neprobehne...

static int castCisla (){
  int cislo = vstupCisla();                          // nactena hodnota z klavesnice, ulozeni do "cislo"

  for (int a = 0;a > cislo; a += 100){
 
  if (a>cislo){
 
  int vystup = (a - 100 ) - cislo;
  return (int) vystup;
    }
  }

return 0;

}

BTW: ten dead kod ti to hazi protoze a nikdy nebude vetsi, nebo rovno cislu, protoze v cyklu mas definovanou podminku ze a>cislo, proto je celej if zbytecnej normalne by ten kod vypada nak takhle:

 static int castCisla (){

  int cislo = vstupCisla();                          // nactena hodnota z klavesnice, ulozeni do "cislo"

  for (int a = 0;a > cislo; a += 100){

   return (a - 100 ) - cislo;
  }

return 0;

}

coz mimo jine znamena, ze ten cyklus je k nicemu, protoze bud probehne jednou (kvuli return), nebo nikdy (pro cisla vetsi nez 0)

takze v uplnym vysledku ten tvuj napsanej kod vypada nejak takhle:

static int castCisla (){

  int cislo = vstupCisla();                          // nactena hodnota z klavesnice, ulozeni do "cislo"

if(cislo<0){

   return (0 - 100 ) - cislo;

}

return 0;

}

Nahlásit jako SPAM
IP: 84.42.178.–
Petr1
~ Anonymní uživatel
3 příspěvky
28. 10. 2012   #5
-
0
-

   

Všechno opraveno a funguje parádně. Největší problém byla nakonec opravdu špatně napsaná podmínka a cyklus, čemuž sem nevěnoval takovou pozornost.
Zas sem se něco přiučil, takže díky mockrát  za pomoc  

Nahlásit jako SPAM
IP: 85.70.44.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Návratové hodnoty f-ce — založil Lodhart

Metody — založil Erik

Metódy — založil fraus

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý