Newsgroup: it.comp.java
Titolo: Struttura dati

Ciao a tutti,
leggo un record via JDBC, prendo alcuni campi che mi interessano e con
essi devo comporre uno stringone con campi a lunghezza fissa. Ma se non
so creare strutture dati (le bellissime e semplicissime DS dell'RPG) o
dimensionare le stringhe e poi comporre il tutto, come cavolo faccio???
Esempio: ho un campo in SQLServer lungo 50, la denominazione inserita
occupa 30 caratteri, una volta che lo leggo con il mio bel programmino
java e faccio un .length sulla stringa mi dice che è lungo 30, ma io
voglio metterlo nel mio campo denominazione dello stringone lungo 60...
è un problema.
Odio Java o forse lo amerei se trovassi il tempo per approfondire.

 
E' un problema di approccio.
prova a Partire con questa idea: rpg = male , java = bene.
in java le stringhe non hanno lughezza fissa (bene), in rpg
le stringhe hanno lughezza fissa (male).
se continui cosě un giorno dirai... ma quei cazzoni dell'rpg
come hanno pensato che una stringa possa avere una lunghezza fissa
a priori ? a che serve ?
rpg = male , java = bene
rpg = male , java = bene
rpg = male , java = bene
rpg = male , java = bene
rpg = male , java = bene
rpg = male , java = bene
rpg = male , java = bene
rpg = male , jav....
registra e ascoltalo di notte...

 è un problema.
Ti giuro, non capisco il problema. Ricavi una stringa di 30 caratteri e
vorresti "allungarla" a 50 inserendo degli spazi ?
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

 ha scritto nel messaggio
news:1118245676.7...@o13g2000cwo.googlegroups.com...


X MUX: Per quello che devo fare io ovvero manipolare dati del database
di AS400 l'RPG va più che bene. Ad avere tempo comunque imparerei un
sacco di cose.
X MSL: purtroppo me le devi tagliare giù più fini perchè "printf"
del C per me è cinese conoscendo soltanto un paio di istruzioncine di
Java
Faccio un altro esempio:
lo stringone che devo costruire è composto da 3 campi a lunghezza
fissa
codice (5)
denominazione (20)
provincia (2)
faccio una select e recupero un record che ha i campi codice = "00011",
una denominazione "Pippo" che è lunga 5 caratteri e una provincia
"MI". Componendo la stringa ottengo
"00001PippoMI"
ed invece vorrei che fosse
"00001Pippo               MI"
come faccio a dire al mio programmino di aggiungere dopo "Pippo" 15
spazi bianchi per riempire il mio campo denominazione che è lungo 20?
Non dovrò stare lì a fare un ciclo per ogni campo dello stringone che
devo gestire?

Fai così:
public class ProvaBuffer {
	StringBuffer sb;
	ProvaBuffer () {
		char [] ch = new char[20];
		for (int i=0; i<ch.length; i++){
			ch[i]=' ';
		}
		sb = new StringBuffer(new String(ch));
	}
	public void launch (){
		String s = "pippo";  //qui ci sarà il valore della SELECT
		sb = sb.replace(0,s.length(),s);
	}
	public static void main(String[] args) {
		ProvaBuffer pb = new ProvaBuffer();
		pb.launch();
	}
}

 Odio Java o forse lo amerei se trovassi il tempo per approfondire.
Ad occhio ...
----------------------------------------------
String campo_da_db="ciao";
// sb è il tuo stringone ...
StringBuffer sb=new StringBuffer(60);
sb.replace(0,campo_da_db.length,campo_da_db);
-----------------------------------------------
P.S. Un consiglio: invece di perdere tempo ad odiare Java, perchè non
scrivi una classe con tutti i campi del db che ti interessano?
Cosi' facendo non hai bisogno di implementare strutture dati strane e
difficili da gestire e, soprattutto, cominci a parlare la stessa lingua
di Java.

 ha scritto nel messaggio
news:1118300926....@g47g2000cwa.googlegroups.com...


X MSL:
grazie alla tua dritta del 8 Giu 22:48 ho fatto in questo modo
while(res.next()) {
String ccl = res.getString(2) + sep4;
String prf = res.getString(3) + sep4;
String rnum = res.getString(6) + sep4;
String ralf = res.getString(7) + sep4;
String den = res.getString(8) + sep4;
String cf = res.getString(12) + sep4;
String piva = res.getString(13) + sep4;
String pro = res.getString(14) + sep4;
String record =
rapp + sep1 +
data + sep1 +
den.substring(0, 38) + sep1 +
pro.substring(0, 2) + sep1 +
cf.substring(0, 16) + sep2 +
piva.substring(0, 11) + sep3 +
ccl.substring(0, 6) +
ralf.substring(0, 60) +
rnum.substring(0, 12) + sep4 +
prf.substring(0, 12) + sep5;
}
fermo restando che se ci fosse stata la possibilità di istanziare una
stringa di n caratteri avrei fatto prima. lo StringBuffer che mi è
stato suggerito successivamente alla realizzazione del mio programmino
però faceva proprio al caso mio.
grazie a tutti