Problém s try (nevim přesně) – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s try (nevim přesně) – Java – Fórum – Programujte.comProblém s try (nevim přesně) – Java – Fórum – Programujte.com

 

MpPozor0
Newbie
23. 2. 2012   #1
-
0
-

Dobrý den,
udělal jsem si tento překladač:

package hlp;

import java.io.*;
import java.util.*;

public class Translator
{
    private static Map<String,String> translateTable;
    private static String language = "NULL";

    public Translator()
    {
        translateTable = new HashMap<String,String>();
        while(!setLanguage("EN")) {
        	System.out.println("nelze nacist coubor s jazykem EN");
        }
    }
    
    public static boolean setLanguage(String newLanguage) {
    	if(language == null || newLanguage == null || language.equalsIgnoreCase(newLanguage)) {
    		return false;
    	}

    	translateTable = new HashMap<String,String>();
    	System.out.println(translateTable);
    	String line;
    	BufferedReader br = loadFile(newLanguage);
    	try {
    		while ((line = br.readLine()) != null) {
    			String[] a = line.split("=", 2);
    			translateTable.put(a[0], a[1].replace("\\n", "\n"));
    	    	System.out.println(a);
    	    	System.out.println();
    		}
    	}
    	catch(IOException e) {
    		app.Main.exit();
    		return false;
    	}
    	return true;
    }
	private static BufferedReader loadFile(String s) {
		BufferedReader br;
		try {
			br = new BufferedReader(new FileReader(s+".lang"));
		}
		catch(IOException e) {
			br = null;
			app.Main.exit();
		}
		return br;
	}

    public static String translate(String code)
    {
    	System.out.println(translateTable);
        String s = translateTable.get(code);
        if(s == null || s.isEmpty() || s=="") {
        	app.Main.exitWithoutTranslate();
        	return "";
        }
        else {
        	return s;
        }
    }
}

Ale když vyvolám translate("neco"), tak mi to nic nevrátí. V kódu jsou system.out.println(translateTable); ale nic to nevypisuje (vypíše to { } ). Na začátku public static void main(String[] args) mám vyvoláno new Translator() pro načtení jazyka.

Prosím o pomoc, nevím co s tím je.

Nahlásit jako SPAM
IP: 85.132.159.–
liborb
~ Redaktor
+18
Guru
23. 2. 2012   #2
-
0
-

Máš to dost .... zmatené. Proč používáš statické proměnné třídy a funkce? Proč máš v konstruktoru "nekonečnou smyčku"? Proč v konstruktoru vytváříš instanci translateTable, aby si ji následně setLanguage udělal znovu? Soubor EN.lang existuje? A je v aktuální adresáři? A jaký je aktuální adresář?

Nahlásit jako SPAM
IP: 78.80.52.–
MpPozor0
Newbie
26. 2. 2012   #3
-
0
-

#2 liborb
 

statické funkce mám, protože na ně odkazuju z jiných tříd a nechci s tím mít hodně problémů
ta smyčka je opravená, to byl 1. pokus a byl plánován trochu jinak.
translateTable je tam navíc, to uznávám, ale je to jen jeden řádek, takže se to hned stratí
soubor EN.lang existuje a je na správném místě

Celkově zmatené? Spíš pro jiné lidi nesrozumitelné.

Nahlásit jako SPAM
IP: 85.132.159.–
liborb
~ Redaktor
+18
Guru
27. 2. 2012   #4
-
0
-

No když máš všechno správně, tak pak je tu ještě krokování (ladění), aby si viděl, co se kde děje.

Nahlásit jako SPAM
IP: 78.80.52.–
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, 25 hostů

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ý