Vinnaren i pepparkakshustävlingen!
2017-01-27, 13:34
  #1
Medlem
Worgxors avatar
Hej. Någonstans i min kod så har det blivit något problem, jag vet verkligen inte vad det kan vara, har läst på lite om return och försökt på olika sätt men förstår ändå inte hur jag ska få det här att fungera.
Det här stycket kod ska; 1. Läsa in för- och efternamn från en .txt fil. 2. Bryta ner rad för rad så det är namn och efternamn, sen ta ut enstaka bitar i båda, detta görs i andra styckets metod. Sen åter i main ska den skriva ut varje linjes resultat efter "konverteringen" i metoden. Jag är rätt ny ännu med Java men uppskattar gärna om ni kan förklara return då jag inte verkar förstå det alls.
Inget tyder på fel vid kompilering men när jag ska starta händer inte ett skit heller.

Kod:
import java.util.*;
import java.io.*;
public class 
CreateMailList
{
public static 
void main(String[]str)
{
try
{
Scanner filscan = new Scanner (new File("klasslista.txt"));

while(
filscan.hasNext())
{
String line filscan.nextLine();
String email create_email(line);
System.out.println(line+" email: "+email);
create_email(line);
}
}
catch(
Exception e){}

}
public static 
String create_email(String name)
{
String email;
String fornamn name.substring(0name.indexOf(" "));
String efternamn name.substring(name.indexOf(" ")+1);
String fkort fornamn.substring(03);
String ekort efternamn.substring(04);
email fkort+ekort+"@student.hh.se";
{
return 
email
}
}

Citera
2017-01-27, 13:54
  #2
Medlem
Jag tror att public static String create_email(String name) inte ska vara en statisk metod. Tag bort static och prova.
Citera
2017-01-27, 13:58
  #3
Medlem
Svårt att säga utan att veta hur din fil "klasslista.txt" ser ut. Testade själv med denna:

Kod:
hejaaaa hahaf
baaaaaa sjsf
tjoaaaa asdf

Och då blev det så här:

Kod:
hejaaaa hahaf email: hejhaha@student.hh.se
baaaaaa sjsf email: baasjsf@student.hh.se
tjoaaaa asdf email: tjoasdf@student.hh.se
Citera
2017-01-27, 14:09
  #4
Medlem
Citat:
Ursprungligen postat av Worgxor
Hej. Någonstans i min kod så har det blivit något problem, jag vet verkligen inte vad det kan vara, har läst på lite om return och försökt på olika sätt men förstår ändå inte hur jag ska få det här att fungera.
Inget tyder på fel vid kompilering men när jag ska starta händer inte ett skit heller.
Jag skulle gissa på att du har fel sökväg till "klasslista.txt" och därför kastar File en Exception, men du märker det aldrig för att din catch-sats är tom.

Se vad du har för exception, är det som jag tror FileNotFound så ange rätt sökväg förslagsvis filens fullständiga.

Citat:
Ursprungligen postat av Motherofgod
Jag tror att public static String create_email(String name) inte ska vara en statisk metod. Tag bort static och prova.
create_email måste vara statisk, eftersom main är det.

EDIT:
Du har förstått precis rätt hur metodreturer fungerar.
Du behöver däremot inte {} runt ditt return-statement. I mina ögon tillför det inget utan förvirrar
__________________
Senast redigerad av Blippster 2017-01-27 kl. 14:11. Anledning: Tillägg
Citera
2017-01-27, 14:22
  #5
Moderator
tobess avatar
Vid första anblick ser koden helt OK ut. Håller med Blippster, printa exceptionen

Byt ut

Kod:
catch(Exception e){} 

mot

Kod:
catch (Exception e) {
     
System.out.println(e);


och kolla om det printar ut något felmeddelande.
Citera
2017-01-27, 14:26
  #6
Moderator
Protons avatar
Din kod skulle må bra av lite indenteringar, samt en vettigare undantagshantering som sagt.

Dessutom undrar jag över de extra klamrarna i din create_email-metod.

Kod:
public static String create_email(String name

String email
String fornamn name.substring(0name.indexOf(" ")); 
String efternamn name.substring(name.indexOf(" ")+1); 
String fkort fornamn.substring(03); 
String ekort efternamn.substring(04); 
email fkort+ekort+"@student.hh.se"

return 
email;  


Bortsett från att förvirra läsaren av koden, vad fyller
Kod:

return 
email;  

-klamrarna för funktion där?
Citera
2017-01-27, 14:30
  #7
Medlem
Citat:
Ursprungligen postat av tobes
Håller med Blippster, printa exceptionen

Eller så kan man göra om den till en RuntimeException om man inte vet något bättre sätt att hantera det på. RuntimeException behöver man inte fånga vilket man måste göra med t ex IOException. Kör man då java-programmet i en terminal så får man se backtrace av hela exceptionkedjan.

Kod:
throw new RuntimeException(e);
Citera
2017-01-30, 16:35
  #8
Medlem
Worgxors avatar
Tack för all hjälpen, jag kollade igenom koden en extra gång och gjorde en ny lista.
Problemet var att det var tabs och inte space som mellanrum mellan för- och efternamn i den första listan. Annars så fungerade den felfritt. Men tack vare era tips så har jag kunnat förbättra koden och göra den enklare att förstå. Detta med catch exception tyckte jag var grymt användbart. När man inte vet vad det är för fel för att allt verkar okej vid kompillering och start av koden fast koden ändå inte gör vad den ska.
Kod:
catch(Exception e){
System.out.println(e); 

Och detta med return innanför måsvingarna, vet inte vad jag tänkte på där egentligen, hjärnsläpp(?).
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback