2013-02-01, 13:35
  #1
Medlem
Försöker skapa en highscore som ska sparas på en plats på datorn och sedan visas när man vill. Får dock ett problem, den sparar det man skriver i filen men skriver inte ut det.

Kod:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class HighscoreItem {
	public static String NewPerson;
	static BufferedWriter out;
	static String newanswer;


	public static void TheHighscore() {
		try {

	    	System.out.print("Highscore\n");
	    	System.out.print("-------------------\n");
			PrintWriter out = new PrintWriter(new FileWriter("D:\\Highscore.txt"));
			out.print(NewPerson);
			out.close();
			System.out.print("Tryck Q för att avsluta\n");
			System.out.print("Tryck 1 för att lägga till något\n");
			System.out.print("Tryck 2 för att Rensa listan\n");
			Scanner Scanner = new Scanner(System.in);
			newanswer = Scanner.next();
			if (newanswer.equals("1")) {
				
			}
			else if(newanswer.equals("Q")) {
				System.out.print("Programmet Avslutades");
				System.exit(-1);
			}
			else if(newanswer.equals("2")) {
				ClearHighscore();
			}
	
        }catch(IOException e){
	       System.out.println("Error: " + e);
 
	        }
		
	}


	public static void Filewriter() throws IOException {
		Scanner New = new Scanner(System.in); 
			System.out.print("Skriv in nytt namn och poäng\n");
			NewPerson = New.next();
			System.out.print("Visar Highscore....\n");
			System.out.print("######################\n");
			TheHighscore();	
			BufferedReader in;
			try {
				in = new BufferedReader(new FileReader("D:\\Highscore.txt"));
				String text = NewPerson;
			    in.close();

			} catch (FileNotFoundException e) {
				System.out.println("Error: " + e);
				
			}



}


	public static void ClearHighscore() {
		
		try {
	    	System.out.print("Highscore\n");
	    	System.out.print("-------------------\n");
			out= new BufferedWriter(new FileWriter("Highscore.txt"));
		
			out.write("");
			

			out.close();
			
			System.out.print("Tryck Q för att avsluta\n");
			System.out.print("Tryck 1 för att lägga till något\n");
			System.out.print("Tryck 2 för att visa listan\n");
			Scanner Scanner = new Scanner(System.in);
			newanswer = Scanner.next();
			if (newanswer.equals("1")) {
				
			}
			else if(newanswer.equals("Q")) {
				System.out.print("Programmet Avslutades");
				System.exit(-1);
			}
			else if(newanswer.equals("2")) {
				TheHighscore();
			}
        }catch(IOException e){
	       System.out.println("Error: " + e);
 
	        }
		
	}
}
Citera
2013-02-01, 15:20
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av Orakelgrisen
Försöker skapa en highscore som ska sparas på en plats på datorn och sedan visas när man vill. Får dock ett problem, den sparar det man skriver i filen men skriver inte ut det.

Kod:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class HighscoreItem {
	public static String NewPerson;
	static BufferedWriter out;
	static String newanswer;


	public static void TheHighscore() {
		try {

	    	System.out.print("Highscore\n");
	    	System.out.print("-------------------\n");
			PrintWriter out = new PrintWriter(new FileWriter("D:\\Highscore.txt"));
			out.print(NewPerson);
			out.close();
			System.out.print("Tryck Q för att avsluta\n");
			System.out.print("Tryck 1 för att lägga till något\n");
			System.out.print("Tryck 2 för att Rensa listan\n");
			Scanner Scanner = new Scanner(System.in);
			newanswer = Scanner.next();
			if (newanswer.equals("1")) {
				
			}
			else if(newanswer.equals("Q")) {
				System.out.print("Programmet Avslutades");
				System.exit(-1);
			}
			else if(newanswer.equals("2")) {
				ClearHighscore();
			}
	
        }catch(IOException e){
	       System.out.println("Error: " + e);
 
	        }
		
	}


	public static void Filewriter() throws IOException {
		Scanner New = new Scanner(System.in); 
			System.out.print("Skriv in nytt namn och poäng\n");
			NewPerson = New.next();
			System.out.print("Visar Highscore....\n");
			System.out.print("######################\n");
			TheHighscore();	
			BufferedReader in;
			try {
				in = new BufferedReader(new FileReader("D:\\Highscore.txt"));
				String text = NewPerson;
			    in.close();

			} catch (FileNotFoundException e) {
				System.out.println("Error: " + e);
				
			}



}


	public static void ClearHighscore() {
		
		try {
	    	System.out.print("Highscore\n");
	    	System.out.print("-------------------\n");
			out= new BufferedWriter(new FileWriter("Highscore.txt"));
		
			out.write("");
			

			out.close();
			
			System.out.print("Tryck Q för att avsluta\n");
			System.out.print("Tryck 1 för att lägga till något\n");
			System.out.print("Tryck 2 för att visa listan\n");
			Scanner Scanner = new Scanner(System.in);
			newanswer = Scanner.next();
			if (newanswer.equals("1")) {
				
			}
			else if(newanswer.equals("Q")) {
				System.out.print("Programmet Avslutades");
				System.exit(-1);
			}
			else if(newanswer.equals("2")) {
				TheHighscore();
			}
        }catch(IOException e){
	       System.out.println("Error: " + e);
 
	        }
		
	}
}
Du skapar en BufferedReader som heter in, men jag kan inte se att du använder den till något. Dessutom undrar jag vad raden
Kod:
String text newPerson
är tänkt att göra, speciellt i det sammanhang den står. Är det där det är meningen att du skulle läsa ut nåt egentligen?
Citera
2013-02-01, 16:48
  #3
Medlem
Citat:
Ursprungligen postat av Proton
Du skapar en BufferedReader som heter in, men jag kan inte se att du använder den till något. Dessutom undrar jag vad raden
Kod:
String text newPerson
är tänkt att göra, speciellt i det sammanhang den står. Är det där det är meningen att du skulle läsa ut nåt egentligen?

Det är meningen att i metoden
Kod:
Filewriter 
så ska man kunna skriva in en text + nummer till newperson som senare ska spara det till filen. Sedan ska den skriva ut det när man kallar på filen.
Citera
2013-02-01, 18:24
  #4
Medlem
Jooncs avatar
Jag har inte riktigt satt mig in i vad du vill göra och hur du vill göra det, men jag tycker du borde se över ditt bruk av static. Vet du hur static fungerar? Hur resonerar du kring användandet av det?
Citera
2013-02-02, 11:31
  #5
Medlem
Citat:
Ursprungligen postat av Joonc
Jag har inte riktigt satt mig in i vad du vill göra och hur du vill göra det, men jag tycker du borde se över ditt bruk av static. Vet du hur static fungerar? Hur resonerar du kring användandet av det?

Försöker att spara en viss text i en fil på datorn och sedan skriva ut det när man kallar på filen. Problemet jag har är att den skriver inte ut texten däremot så sparar den texten som man har skrivit in till filen som det är tänkt. Ett till problem är att ifall du väljer att starta om programmet och skriva in en ny string så tar den bort den gamla.

Angående det statiska så fungerade inte vissa variabler och eclipse(som jag använder för att köra programmet) bad mig att skriva om det till statiska variabler & metoder.
Citera
2013-02-02, 12:09
  #6
Medlem
Jooncs avatar
Citat:
Ursprungligen postat av Orakelgrisen
Försöker att spara en viss text i en fil på datorn och sedan skriva ut det när man kallar på filen. Problemet jag har är att den skriver inte ut texten däremot så sparar den texten som man har skrivit in till filen som det är tänkt. Ett till problem är att ifall du väljer att starta om programmet och skriva in en ny string så tar den bort den gamla.

Angående det statiska så fungerade inte vissa variabler och eclipse(som jag använder för att köra programmet) bad mig att skriva om det till statiska variabler & metoder.
Okej, kopierar vad jag har i mitt nuvarande projekt:

Kod:
private static StringBuilder loadFile(String path){
        
InputStreamReader isr null;
        try {
            
isr = new InputStreamReader(new FileInputStream(path), "UTF8");
            
BufferedReader in = new BufferedReader(isr);
            
StringBuilder sb = new StringBuilder();
            while(
true){
                
String s in.readLine();
                if (
== null){
                    
in.close();
                    return 
sb;
                }
                
sb.append("\n");
            }
        } catch (
Exception e) {
            if (
isr != null){
                try {
                    
isr.close();
                } catch (
IOException e1) {
                    
e1.printStackTrace();
                }
            }
            
e.printStackTrace();
        }
        return 
null;
    }
    public static 
void saveFile(String pathString content){
        
BufferedWriter out null;
        try {
            
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path),"UTF8"));
            
out.write(content);
            
out.close();

        } catch (
Exception e) {
            
e.printStackTrace();
            if (
out != null){
                try {
                    
out.close();
                } catch (
IOException e1) {
                    
e1.printStackTrace();
                }
            }
        }
    } 

Båda metoderna är statiska eftersom de inte beror på tillståndet hos klassen de ligger i. Med andra ord, de använder inga av klassens tillståndsvariabler; allt som behövs för att köra metoderna (innehåll och sökväg) skickas med till metoderna.

Edit: Exempel på användning:
Kod:
String highscore "Visar Highscore....\n#######\nJonc\t100000";
                
saveFile"highscore.txt"highscore);
                
System.out.println(loadFile("highscore.txt").toString()); 
output:
Visar Highscore....
#######
Jonc 100000
__________________
Senast redigerad av Joonc 2013-02-02 kl. 12:20.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in