Permalänk

Hur sparar jag ett formulär?

Hej allihopa

Jag är väldigt ny på det här med java och tycker det är riktigt svårt (kanske för att jag är tjej? haha!), men samtidigt rätt kul och spännande. Roligt att testa sig fram och se vad som händer.
Jag skulle behöva lite hjälp om ni har tid med att få till en grej som jag är ute efter.

Jag är ute efter att skapa ett formulär där jag ska fylla in min skivsamling och sedan ska allt sparas i en och samma textfil efter att man fyllt i alla uppgifter om varje skiva.

Jag har lyckats få ihop en väldigt enkel kod och den fungerar för att få upp rutor där man fyller i uppgifterna. Men jag vet inte hur jag tar mig vidare så att det man skrivit faktiskt sparas ner i en fil.
Skulle vara jättesnällt om jag kunde få lite tips om hur man gör det egentligen.

Här är koden i alla fall:

import javax.swing.JOptionPane; public class Formular { public static void main(String[] args){ String titel=JOptionPane.showInputDialog("Skivans Titel:"); String artist=JOptionPane.showInputDialog("Artist:"); String ar=JOptionPane.showInputDialog("År:"); String antalLatar=JOptionPane.showInputDialog("Antal Låtar:"); String genre=JOptionPane.showInputDialog("Genre:"); } }

Men sen?

/Josefine

Permalänk
Medlem
Skrivet av JosefineF:

Hej allihopa

Jag är väldigt ny på det här med java och tycker det är riktigt svårt (kanske för att jag är tjej? haha!), men samtidigt rätt kul och spännande. Roligt att testa sig fram och se vad som händer.
Jag skulle behöva lite hjälp om ni har tid med att få till en grej som jag är ute efter.

Jag är ute efter att skapa ett formulär där jag ska fylla in min skivsamling och sedan ska allt sparas i en och samma textfil efter att man fyllt i alla uppgifter om varje skiva.

Jag har lyckats få ihop en väldigt enkel kod och den fungerar för att få upp rutor där man fyller i uppgifterna. Men jag vet inte hur jag tar mig vidare så att det man skrivit faktiskt sparas ner i en fil.
Skulle vara jättesnällt om jag kunde få lite tips om hur man gör det egentligen.

Här är koden i alla fall:

import javax.swing.JOptionPane; public class Formular { public static void main(String[] args){ String titel=JOptionPane.showInputDialog("Skivans Titel:"); String artist=JOptionPane.showInputDialog("Artist:"); String ar=JOptionPane.showInputDialog("År:"); String antalLatar=JOptionPane.showInputDialog("Antal Låtar:"); String genre=JOptionPane.showInputDialog("Genre:"); } }

Men sen?

/Josefine

Förslagsvis kan du lagra det på detta vis:

Rad1 > titel,artist,ar,antalLatar,genre
Rad2 > likadant som Rad1
Rad3 > osv.

...men du kanske har någon tanke på om hur datat skall struktureras i textfilen redan(?).

En superenkel variant för att skriva till (append) en fil:

try { FileWriter fstream = new FileWriter("minFil.txt",true); //true säger att vi kommer lägga till text till minFil.txt, inte skriva över. BufferedWriter out = new BufferedWriter(fstream); out.write(minText); out.close(); } catch (Exception e) { System.err.println("Här blev det något fel: " + e.getMessage()); }

Gör en metod för ovanstående kod som har inparametern "minText".
Gör en konkatenerad sträng av variablerna och anropa metoden med resultatet.
Klart.

Hojta till om det blir tokigt.

Lycka till.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Förslagsvis kan du lagra det på detta vis:

Rad1 > titel,artist,ar,antalLatar,genre
Rad2 > likadant som Rad1
Rad3 > osv.

...men du kanske har någon tanke på om hur datat skall struktureras i textfilen redan(?).

En superenkel variant för att skriva till (append) en fil:

try { FileWriter fstream = new FileWriter("minFil.txt",true); //true säger att vi kommer lägga till text till minFil.txt, inte skriva över. BufferedWriter out = new BufferedWriter(fstream); out.write(minText); out.close(); } catch (Exception e) { System.err.println("Här blev det något fel: " + e.getMessage()); }

Gör en metod för ovanstående kod som har inparametern "minText".
Gör en konkatenerad sträng av variablerna och anropa metoden med resultatet.
Klart.

Hojta till om det blir tokigt.

Lycka till.

Hej där och tack för hjälpen!

Tyvärr får jag det inte att fungera, men jag har säkert gjort fel. Jag missuppfattar det mesta i java känns det som =(
Det här är vad jag har gjort:

import javax.swing.JOptionPane; public class Formular { public static void main(String[] args){ String titel=JOptionPane.showInputDialog("Skivans Titel:"); String artist=JOptionPane.showInputDialog("Artist:"); String ar=JOptionPane.showInputDialog("År:"); String antalLatar=JOptionPane.showInputDialog("Antal Låtar:"); String genre=JOptionPane.showInputDialog("Genre:"); } public minText() { try { FileWriter fstream = new FileWriter("minFil.txt",true); //true säger att vi kommer lägga till text till minFil.txt, inte skriva över. BufferedWriter out = new BufferedWriter(fstream); out.write(minText); out.close(); } catch (Exception e) { System.err.println("Här blev det något fel: " + e.getMessage()); } } }

Vad behövs mer?
Ush vad svårt det allra enklaste ska vara.
Men kul om det fungerar.

Permalänk
Medlem

Du måste ha en inparameter i funktionen minText där du skickar med det som ska skrivas till filen.

Visa signatur

Intel i7 2600K @ 4.5GHz | GeForce GTX 680 | ASUS P8P67 PRO | Corsair Dominator 16GB 1600MHz | Samsung 830 256GB

Permalänk
Skrivet av elius:

Du måste ha en inparameter i funktionen minText där du skickar med det som ska skrivas till filen.

Men hur gör jag det?
Har suttit här länge och försökt klura ut det. Men alltså hur gör man det?

Jag framstår säkert som helt blåst, precis som i kursen jag går där det bara är killar som alla verkar förstå precis allt.

Får ursäkta min dumma fråga

Permalänk
Medlem
Skrivet av JosefineF:

Men hur gör jag det?
Har suttit här länge och försökt klura ut det. Men alltså hur gör man det?

Jag framstår säkert som helt blåst, precis som i kursen jag går där det bara är killar som alla verkar förstå precis allt.

Får ursäkta min dumma fråga

public minText(String minText) { }

Typ så.

Visa signatur

Intel i7 2600K @ 4.5GHz | GeForce GTX 680 | ASUS P8P67 PRO | Corsair Dominator 16GB 1600MHz | Samsung 830 256GB

Permalänk
Skrivet av elius:

Ok, tack.
Men det vill sig ändå inte. Men jag kanske har placerat txt-filen på fel ställe. Eller måste man säga åt programmet var den finns?
Sedan säger eclipse att "the return-type is missing" och det gäller alltså början av funktionen minText.
Jag testade med att använda void efter public men det fungerade ändå inte.

Här är koden som den är nu:

import javax.swing.JOptionPane; public class Formular { public static void main(String[] args){ String titel=JOptionPane.showInputDialog("Skivans Titel:"); String artist=JOptionPane.showInputDialog("Artist:"); String ar=JOptionPane.showInputDialog("År:"); String antalLatar=JOptionPane.showInputDialog("Antal Låtar:"); String genre=JOptionPane.showInputDialog("Genre:"); } public minText(String minText) { try { FileWriter fstream = new FileWriter("minFil.txt",true); //true säger att vi kommer lägga till text till minFil.txt, inte skriva över. BufferedWriter out = new BufferedWriter(fstream); out.write(minText); out.close(); } catch (Exception e) { System.err.println("Här blev det något fel: " + e.getMessage()); } } }

Permalänk
Medlem

public void minText(String minText){ }

Så kanske?

Sedan måste du kalla på funktionen också så mellan varje JOptionPane kör

String antalLatar=JOptionPane.showInputDialog("Antal Låtar:"); minText(AntalLatar); String genre=JOptionPane.showInputDialog("Genre:"); minText(genre);

Då kommer den skriva varje ord till filen direkt efter varandra

Visa signatur

| CPU: Intel Core i5 3570K | Mobo: MSI Z77A-GD65 ATX | Ram: Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE | GFX: Gigabyte HD7970 OC 3GB | SSD: Corsair Force 3 120GB | HDD: Diverse Mekaniska 4TB | Chassi: Corsair 800D | PSU: Corsair AX 850W 80+ Gold Modulär | CPU Cooler: Corsair H50 |
Citera mig så hittar jag tillbaka hit :)

Permalänk
Skrivet av erdraug:

public void minText(String minText){ }

Så kanske?

Sedan måste du kalla på funktionen också så mellan varje JOptionPane kör

String antalLatar=JOptionPane.showInputDialog("Antal Låtar:"); minText(AntalLatar); String genre=JOptionPane.showInputDialog("Genre:"); minText(genre);

Då kommer den skriva varje ord till filen direkt efter varandra

Hej!

Jag testade det med void men det fungerade inte. Utan den tycker fortfarande att "return type for the method is missing" =(

Sedan gjorde jag som du skrev ang JOptionPane men även där tycker eclipse att jag gjort något fel.
Förstår inte vad det kan vara.

Så här är koden nu:

import javax.swing.JOptionPane; public class Formular { public static void main(String[] args){ String titel=JOptionPane.showInputDialog("Skivans Titel:"); minText(titel); String artist=JOptionPane.showInputDialog("Artist:"); minText(artist); String ar=JOptionPane.showInputDialog("År:"); minText(ar); String antalLatar=JOptionPane.showInputDialog("Antal Låtar:"); minText(antalLatar); String genre=JOptionPane.showInputDialog("Genre:"); minText(genre); } public void minText(String minText) { try { FileWriter fstream = new FileWriter("minFil.txt",true); //true säger att vi kommer lägga till text till minFil.txt, inte skriva över. BufferedWriter out = new BufferedWriter(fstream); out.write(minText); out.close(); } catch (Exception e) { System.err.println("Här blev det något fel: " + e.getMessage()); } } }

Permalänk
Medlem

public static void minText

Enda jag kan komma på, inte kodat java på 4 år

Visa signatur

| CPU: Intel Core i5 3570K | Mobo: MSI Z77A-GD65 ATX | Ram: Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE | GFX: Gigabyte HD7970 OC 3GB | SSD: Corsair Force 3 120GB | HDD: Diverse Mekaniska 4TB | Chassi: Corsair 800D | PSU: Corsair AX 850W 80+ Gold Modulär | CPU Cooler: Corsair H50 |
Citera mig så hittar jag tillbaka hit :)

Permalänk
Medlem

Testa något sånt här..

public static void main(String[] args) { String titel = JOptionPane.showInputDialog("Skivans Titel:"); String artist = JOptionPane.showInputDialog("Artist:"); String ar = JOptionPane.showInputDialog("År:"); String antalLatar = JOptionPane.showInputDialog("Antal Låtar:"); String genre = JOptionPane.showInputDialog("Genre:"); try { PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("minFil.txt", true)), true); out.println("Titel: " + titel); out.println("Artist: " + artist); out.println("År: " + ar); out.println("Antal låtar: " + antalLatar); out.println("Genre: " + genre); out.close(); } catch (IOException e) { e.printStackTrace(); } }

edit: du måste även importera de nya klasserna, dvs. PrintStream, BufferedWriter, FileWriter och IOException. Görs lättat med direktivet import java.io.*;

Visa signatur

Kom-pa-TI-bilitet