Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    numero posizione carattere

    Salve.
    Ho scritto questo codice:
    codice:
    int [] simboloPiu = new int [contenutoNelleParentesi];
    for (int i =0; i < contenutoNelleParentesi; i++){
    if (contenutoNelleParentesi.chartAt(i)== 'i'){
    simboloPiu [i]= contenutoNelleParentesi.indexOf('+');
    System.out.println (simboloPiu[i]);
    }
    }
    Vorrei che nell'array mi inserisse la posizione numerica dell'indice.
    Ma ottengo 1 se trova il + invece zero se non lo trova.
    Come posso ottenere o stampate il numero di indice quando lo trova nella stringa?

  2. #2
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Quote Originariamente inviata da Ironmax Visualizza il messaggio
    Salve.
    Ho scritto questo codice:
    codice:
    int [] simboloPiu = new int [contenutoNelleParentesi];
    for (int i =0; i < contenutoNelleParentesi; i++){
    if (contenutoNelleParentesi.chartAt(i)== 'i'){
    simboloPiu [i]= contenutoNelleParentesi.indexOf('+');
    System.out.println (simboloPiu[i]);
    }
    }
    Vorrei che nell'array mi inserisse la posizione numerica dell'indice.
    Ma ottengo 1 se trova il + invece zero se non lo trova.
    Come posso ottenere o stampate il numero di indice quando lo trova nella stringa?
    è sicuramente un problema mio, ma non ho capito ...
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    La prima e la seconda riga del tuo codice suggeriscono che "contenutoNelleParentesi" sia una variabile intera.
    Nella terza e quarta riga stai cercando di usare i metodi charAt() e indexOf() di String sulla variabile intera... che, appunto, non è una stringa.


    Di che tipo è "contenutoNelleParentesi"? Com'è definita?
    O sono sbagliate le prime due righe o sono sbagliate le seconde due... in ogni caso non compilerà mai.



    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    La prima e la seconda riga del tuo codice suggeriscono che "contenutoNelleParentesi" sia una variabile intera.
    Nella terza e quarta riga stai cercando di usare i metodi charAt() e indexOf() di String sulla variabile intera... che, appunto, non è una stringa.


    Di che tipo è "contenutoNelleParentesi"? Com'è definita?
    O sono sbagliate le prime due righe o sono sbagliate le seconde due... in ogni caso non compilerà mai.



    Ciao.
    Appunto ... è quello che intendevo
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Qua sotto c'è tutto quello che ho scritto, "per fare delle prove"
    codice:
    import java.util.Scanner;
    public class Main2 {
           public static void main(String[] args) {
                  String espressione = "";
                  int lunghezza = 0;
                  Scanner tastiera = new Scanner(System.in);
                  System.out.println("inserire una espressione frazionaria");
                  espressione = tastiera.nextLine();
                  lunghezza = espressione.length();
                  int parentesiAperta = 0;
                  int parentesiChiusa = 0;
                  String nome = "Massimo";
                  char[] compitatore = new char[espressione.length()];
                  for (int i = 0; i < compitatore.length; i++) {
                        // compitatore[i] = nome.charAt(i);
                        System.out.println(espressione.charAt(i));
                        if (espressione.charAt(i) == '(') {
                               parentesiAperta = espressione.indexOf('(');
                        }
                        if (espressione.charAt(i) == ')') {
                               parentesiChiusa = espressione.indexOf(')');
                        }
                  }
                  System.out.println("posizione parentesi aperta : " + parentesiAperta);
                  System.out.println("posizione parentesi chiusa : " + parentesiChiusa);
                  String contenutoNelleParentesi = "";
                  contenutoNelleParentesi = espressione.substring(parentesiAperta + 1,
                               parentesiChiusa);
                  System.out.println("Contenuto nelle parentesi : "
                               + contenutoNelleParentesi);
                  char[] contenutoParentesi = new char[contenutoNelleParentesi.length()];
                  int[] simboloPiu = new int[contenutoNelleParentesi.length()];
                  int conta = 0;
                  for (int i = 0; i < contenutoParentesi.length; i++) {
                        if (contenutoNelleParentesi.charAt(i) == '+') {
                               simboloPiu[i] = contenutoNelleParentesi.indexOf('+');
                               System.out.println("---" +    simboloPiu[i]);
                        }
                  }
                  for (int i = 0; i < contenutoParentesi.length; i++) {
                        if (simboloPiu[i] == 1) {
                               conta += simboloPiu[i];
                               System.out.println(simboloPiu[i] + " " + conta);
                        }
                  }
           }
    }

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ok, ora il codice comincia ad avere "un senso"... perlomeno visto che quelle righe non sono esattamente come postate da te nel primo intervento.

    Ora rimane da capire esattamente cosa vuoi ottenere, che non s'è capito molto.

    Il codice da te postato, verso la fine, crea un array di interi con N posizioni... N = lunghezza della stringa contenutoNelleParentesi.

    Poi scorre questa stringa carattere per carattere e se l'i-esimo carattere è un simbolo '+', allora scrive all'i-esima posizione dell'array la posizione in cui questo simbolo è stato trovato... nota che tale valore sarà per forza di cose uguale a "i" (contatore del for), quindi l'uso del metodo indexOf() è superfluo... a meno che nella stringa non vi siano più occorrenze di quel carattere, nel qual caso, per ciascuna "posizione" ti ritroverai il valore corrispondente alla posizione della prima occorrenza. Detto con un esempio:

    codice:
    // Caso 1
    contenutoNelleParentesi = "1+3";
    simboloPiu = [0,1,0]
    
    
    // Caso 2
    contenutoNelleParentesi = "13+3+55+6";
    simboloPiu = [0,0,2,0,2,0,0,2,0]

    Quindi... prendendo per semplicità gli esempi che ho fatto io qui sopra, cosa vuoi ottenere come risultato (sia nel caso 1 che nel caso 2)?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.