Zdravim.
Jsem naprostý začátečník, to úvodem.
Potřeboval bych generovat 20-ti místné kladné číslo, ale long má pouze 19 míst.
Tak mě napadlo, nemusí to být nutně číslo, může to být i 20 znaků.
A teď otázka, zda lze generovat přes Rnd.get i String znaky, na netu jsem to nenašel.
Děkuji za odpověď.
Fórum › Java
Random String
Znaky jsou taky čísla, resp. číselné hodnoty znaků. Můžeš napsat
char c = 65; // char c = 'A';
Takže jen potřebuješ generovat hodnoty v určitém rozsahu. Obecně třeba taktoString s = "";
Random rnd = new Random();
for (int i = 0; i < 20; i++)
s += (char)('0' + rnd.nextInt(10));
A konkrétně tady stačí vygenerované hodnoty rovnou převádět na string (což se přičtením ke stringu udělá automaticky)String s = "";
Random rnd = new Random();
for (int i = 0; i < 20; i++)
s += rnd.nextInt(10);
Ještě takový dotaz:
Šlo by vygenerované číslo pro zobrazení rozdělit na bloky např. pomlčkou?
Příklad:
Vygeneruje se mi číslo: 11112222333344445555
Chci, aby se mi zobrazovalo takto: 1111-2222-3333-4444-5555
Děkuji předem za rady.
Tak a teď mám jiný problém. Jak odeslat vygenerovaný klíč z jedné třídy do druhé? Když přidám metodu třídy static (getKey()), tak mi píše chybu: non-static variable _key cannot be referenced from a static context
Když static nepřidám, tak mi píše: non-static method getKey() cannot be referenced from a static context
Fakt už si nevím rady.
To jsou jen části kódů.
Generator.java
public void Generator
{
Random rnd = new Random();
for (int i = 0; i < 20; i++)
_newCode += rnd.nextInt(10);
setKey(_newCode);
}
public void setKey(String key)
{
key = _key;
}
public String getKey() // Tady mi pise chybu
{
return _key;
}
Porovnani.java
String _klic = Generator.getKey();
Ano, tohle funguje, děkuji.
Další dotaz, co když budu chtit převzít vygenerovaný kód do dalších tříd?
Z Generate.java do Porovnani.java a např. do VypisKod.java
Když si v nich vytvořím nový objekt, tak bude v každé třídě jiný, ne? A já bych chtěl v Porovnani i VypisKod stejný key, který se mi vygeneruje v Generate.
Omlouvám se za hloupé dotazy ale učím se. :)
Skoro perfektní. Přesně tohle jsem potřeboval. Ale nevím, zda dělám chybu já, nebo je někde jinde, ale když volám _code = Generator.getInstance().getKey(); tak mi vrací stále stejné číslo, negeneruje nové. V čem je tedy problém?
Zde je kód Generator.java
import java.util.Random;
public class Generator
{
protected String _newCode = "";
public Generator(){}
public static Generator getInstance()
{
return Singleton._instance;
}
public String getKey()
{
Random rnd = new Random();
for (int i = 0; i < 20; i++)
_newCode += rnd.nextInt(10);
return _newCode;
}
@SuppressWarnings("synthetic-access")
private static class Singleton
{
protected static final Generator _instance = new Generator();
}
}
jo a mimochodem, ten singleton se dělá následovně... takhle tam máš zbytečné více tříd...
import java.util.Random;
public class Generator
{
protected String _newCode = "";
static private Generator _instance = null;
public Generator(){}
public static Generator getInstance()
{
if(Generator._instance == null)
Generator._instance = new Generator();
return Generator._instance;
}
public String getKey()
{
Random rnd = new Random();
_newCode = new String();
for (int i = 0; i < 20; i++)
_newCode += rnd.nextInt(10);
return _newCode;
}
}
EDIT: Takže nový kód se generuje po každém volání, bohužel při volání z jiné třídy i ve stejný čas se vygeneruje vždy jiný key. Potřeboval bych na jednu season při volání ze dvou tříd stejný key. Původní můj návrh sice takto fungoval, ze dvou tříd stejný key, ale nový kód se negeneroval při dalším volání.
Tak jinak. Špatně jsem to formuloval. Generátor bych nechal tak, ten už funguje perfektně a to, co jsem chtěl já by bylo složité a po ránu zjišťuji i nesmyslné.
Takže jinak. Zavolám z Vypis.java třídu Generator.java, ta mi vygeneruje kód a Vypis.java mi ho vypíše.
Otázka zní: Mohu předat hodnotu do Porovnej.java z Vypis.java, aniž bych vytvářel novou instanci?
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Kontrola zda string obsahuje jiný string — založil beachboy
String to hex ebo Byte()"string" — založil Roman Uherek
RANDOM z TXT — založil kodooo
Potíže s Random — založil solomon
Random hodnota — založil tOreee
Moderátoři diskuze