Errore indice posizione 0 solo valori di ritorno

di il
25 risposte

25 Risposte - Pagina 2

  • Re: Errore indice posizione 0 solo valori di ritorno

    imparareJava ha scritto:


    Ho fatto in questo modo, ma non ci riesco, non mi da nessun errore, e non mi restituisce nulla.
    Ma NON devi fare N find() !! Ne devi fare uno solo. Rileggi il mio abbozzo di prima.
  • Re: Errore indice posizione 0 solo valori di ritorno

    L'ho fatto in questo modo:
    
    public void getTraduttoreIt_ENUM_NLS() throws Exception {
    		List<EnumNls> db2 = getListEnumNls();
    		List<DizioPt> sqlServer = getListDizioPt();
    		String prefisso = "";
    		String descrizione = "";
    		String risultato = "";
    
    		// Espressioni regolari Pattern
    		Pattern prefissoDescrizionePattern = Pattern.compile("(\\d+\\s*-\\s*)?(.*)");
    
    		BufferedWriter scrivi = new BufferedWriter(
    				new FileWriter("C:/Users/francesco/Desktop/Table_THERA.ENUM_NLS_Sez4.txt"));
    		System.out.println("-------------------WRITE FILE N°4--------TRANSLATION------------------------");
    
    		for (int i = 0; i < db2.size(); i++) {
    			// Valore della stringa db2
    			String str = db2.get(i).getEnumDesc(); // valore record db2
    			Matcher matcher = prefissoDescrizionePattern.matcher(str);
    
    			for (int j = 0; j < sqlServer.size(); j++) {
    
    				// Faccio la ricerca Prefisso
    				if (matcher.find()) {
    					prefisso = matcher.group(1);
    					descrizione = sqlServer.get(j).getKeyword();
    				}
    
    				if (true) {
    					risultato = (prefisso != null ? prefisso : "") + descrizione;
    				}
    
    				if (risultato.equals(sqlServer.get(j).getKeyword())) {
    					System.out.println(
    							"INSERT INTO THERA.ENUM_NLS VALUES" + "(" + "'" + db2.get(i).getAttributeRef().trim() + "'"
    									+ "," + "'" + db2.get(i).getEnumValue().trim() + "'" + "," + "'" + "en" + "'" + ","
    									+ "'" + sqlServer.get(j).getTraduzione() + "'" + ")" + ";");
    
    					scrivi.write("INSERT INTO THERA.ENUM_NLS VALUES" + "(" + "'" + db2.get(i).getAttributeRef().trim()
    							+ "'" + "," + "'" + db2.get(i).getEnumValue().trim() + "'" + "," + "'" + "en" + "'" + ","
    							+ "'" + sqlServer.get(j).getTraduzione() + "'" + ")" + ";");
    
    					scrivi.newLine();
    					scrivi.flush();
    				}
    			}
    
    		}
    		scrivi.close();
    	}
    
    
    
    
    Mi stampa le cose che io non considero.

    Mi deve stampare questo:

    hello
    two
    1 - dog
    1 - house

    Nella stampa non vedo questo.

    Poi qui ho scritto bene? --> if (risultato.equals(sqlServer.get(j).getKeyword()))
    Qui invece ho scritto bene? --> System.out.println(
    "INSERT INTO THERA.ENUM_NLS VALUES" + "(" + "'" + db2.get(i).getAttributeRef().trim() + "'"
    + "," + "'" + db2.get(i).getEnumValue().trim() + "'" + "," + "'" + "en" + "'" + ","
    + "'" + sqlServer.get(j).getTraduzione() + "'" + ")" + ";");

    considerando --> sqlServer.get(j).getTraduzione() oppure devo scrivere risultato.trim()
  • Re: Errore indice posizione 0 solo valori di ritorno

    imparareJava ha scritto:


    L'ho fatto in questo modo:
    Noooo. Te lo ripeto, una volta ottenuto il Matcher, devi fare 1 (uno) find(). Non N come stai facendo adesso.

    Allora: la lista db2 ti dà N elementi, ciascuno ha una descrizione "composta" con quel prefisso e solo la parte descrizione la devi andare a cercare (in quel keyword) nella lista sqlServer. Giusto?

    Bene, molto ABBOZZATO:
    for su db2 {
        ottieni Matcher dalla descrizione da getEnumDesc()
        un solo find(), poi estrai prefisso e descrizione
    
        for su sqlServer {
            la keyword è uguale a descrizione? Allora hai trovato la traduzione, ricomponi prefisso+keyword (poi potresti già terminare questo for interno)
        }
    }
    Più di così ....
  • Re: Errore indice posizione 0 solo valori di ritorno

    Sinceramente ancora non ho capito.

    C'è qualcosa di più semplice?

    Traduco:
    for su db2 {
    ottieni Matcher dalla descrizione da getEnumDesc()
    String str = db2.get(i).getEnumDesc(); // valore record db2
    Matcher matcher = prefissoDescrizionePattern.matcher(str);
    un solo find(), poi estrai prefisso e descrizione
    if (matcher.find()) {
    prefisso = matcher.group(1);
    descrizione = sqlServer.get(j).getKeyword();
    }

    for su sqlServer {
    la keyword è uguale a descrizione? Allora hai trovato la traduzione, ricomponi prefisso+keyword (poi potresti già terminare questo for interno)

    il confronto è getEnumDesc() e keyword

    if (str.equals(descrizione ){

    Ricompongo il prefisso e keyword
    if (true) {
    risultato = (prefisso != null ? prefisso : "") + descrizione;
    }
    }

    Alla fine stampo.

    Non ho capito come si estrai il prefisso e descrizione, è un argomento difficile

    }
  • Re: Errore indice posizione 0 solo valori di ritorno

    imparareJava ha scritto:


    Sinceramente ancora non ho capito.

    C'è qualcosa di più semplice?
    Scusa, ma cosa c'è di non chiaro? Ti ho mostrato pezzi di codice e abbozzi vari ....
  • Re: Errore indice posizione 0 solo valori di ritorno

    L'ho fatto in questo modo, ma ancora non riesco a capire come posso implementare la bozza.
    
    public void getTraduttoreIt_ENUM_NLS() throws Exception {
    		List<EnumNls> db2 = getListEnumNls();
    		List<DizioPt> sqlServer = getListDizioPt();
    		String prefisso = "";
    		String descrizione = "";
    		String risultato = "";
    
    		// Espressioni regolari Pattern
    		Pattern prefissoDescrizionePattern = Pattern.compile("(\\d+\\s*-\\s*)?(.*)");
    
    		BufferedWriter scrivi = new BufferedWriter(
    				new FileWriter("C:/Users/francesco/Desktop/Table_THERA.ENUM_NLS_Sez4.txt"));
    		System.out.println("-------------------WRITE FILE N°4--------TRANSLATION------------------------");
    
    		for (int i = 0; i < db2.size(); i++) {
    			// Valore della stringa db2
    			String str = db2.get(i).getEnumDesc(); // valore record db2
    			Matcher matcher = prefissoDescrizionePattern.matcher(str);
    
    			for (int j = 0; j < sqlServer.size(); j++) {
    
    				// Faccio la ricerca Prefisso
    				if (matcher.find()) {
    					prefisso = matcher.group(1);
    					descrizione = sqlServer.get(j).getKeyword();
    				}
    				
    				if (true) {
    					risultato = (prefisso != null ? prefisso : "") + descrizione;
    				}
    
    				if (risultato.equals(sqlServer.get(j).getKeyword())) {
    					System.out.println(
    							"INSERT INTO THERA.ENUM_NLS VALUES" + "(" + "'" + db2.get(i).getAttributeRef().trim() + "'"
    									+ "," + "'" + db2.get(i).getEnumValue().trim() + "'" + "," + "'" + "en" + "'" + ","
    									+ "'" + sqlServer.get(j).getTraduzione() + "'" + ")" + ";");
    
    
    Ho notato che mi stampa:
    INSERT INTO THERA.ENUM_NLS VALUES('SELFMVPR','0','en','BCA030E-The previous period {0} must be different from the period code');

    in questa parte doveva stampare:
    BCA030E-The previous period {0} must be different from the period code'

    hello
    1 - dog
    ecc...

    Non ho mai trattato questo argomento espressioni regolari.
    Il mio codice è errato.

    Poi questa espressione non ho capito: Pattern.compile("(\\d+\\s*-\\s*)?(.*)");
    Che cosa cattura questo ? compile("(\\d+\\s*-\\s*)?(.*)"); --> come di divide in gruppo?
    che io devo prendere solo i valori da 0 a 9 , il trattino -, e tutte le stringhe
  • Re: Errore indice posizione 0 solo valori di ritorno

    Non è possibile fare una cosa semplice.

    Con charAt o indexOF ?

    Su questo mi puoi aiutare?
  • Re: Errore indice posizione 0 solo valori di ritorno

    imparareJava ha scritto:


    Non è possibile fare una cosa semplice.
    Povero andbin

    Certo che non riesci a farle le cose: ti ha detto cinquantamila volte di tirare una cosa fuori dal for e ancora non l'hai fatto, fallo e basta, cosa continui a chiedere
  • Re: Errore indice posizione 0 solo valori di ritorno

    Va bene.
  • Re: Errore indice posizione 0 solo valori di ritorno

    imparareJava ha scritto:


    Non è possibile fare una cosa semplice.
    Allora, chiariamo così: se quel getEnumDesc() dà ad esempio "1234 - Una descrizione" e tu devi andare a cercare "Una descrizione" (SENZA prefisso, quindi) nei vari keyword dal getKeyword(), quanto ho detto io è sensato e corretto.
    Chiaramente va applicato appropriatamente.
  • Re: Errore indice posizione 0 solo valori di ritorno

    Va bene. Grazie
Devi accedere o registrarti per scrivere nel forum
25 risposte