Newsgroup: it.comp.java
Titolo: Problema con il Return.

In questo codice il return del metodo contaCognomi mi restituisce sempre -1.
Perchè?
[...CUT...]
CLASSE COGNOMI.JAVA
public int contaCognomi(int posizione, char carattere){
   int numero=0;
   for(int i=0;i<cognomi.length;i++){
    char c=cognomi[i].charAt(posizione);
    if(c==carattere){
     numero=numero++;
     System.out.println(numero);
    }
   }
   if(numero>0){
    return numero;
   }else{
    return -1;
   }
  }
CLASSE COGNOMIMAIN.JAVA
int numeroCognomi=corso.contaCognomi(0, 'S');
    if(numeroCognomi==-1)
      System.out.println("Nessun cognome che soddisfa il criterio\n");
    else
      System.out.println("Il numero dei cognomi che soddisfano il criterio
e': "+numeroCognomi);
Eppure sembra tutto a posto. Per il resto non ho problemi, è tutto
inizializzato a dovere.
Grazie a tutti e good coding!

Prova cosě:
 CLASSE COGNOMI.JAVA
 public int contaCognomi(int posizione, char carattere){
    int numero=0;
    for(int i=0;i<cognomi.length;i++){
     char c=cognomi[i].toLowerCase().charAt(posizione);
     if(c==carattere){
      numero++;      // numero=numero++ non penso che si possa fare il
problema probabilmente era proprio qui
      System.out.println(numero);
     }
    }
    if(numero>0){
     return numero;
    }else{
     return -1;
    }
   }
 CLASSE COGNOMIMAIN.JAVA
 int numeroCognomi=corso.contaCognomi(0, 's');


 problema probabilmente era proprio qui
Grazie mille!!!!!!! Avevi ragione, il problema era proprio qui!
Mi ero confuco con l'altro operatore += .......
doveva essere numero+=1 cioč numero=numero+1 quindi numero++.....
Un errore davvero stupido!
Grazie ancora infinite!!!!!

 problema probabilmente era proprio qui
Scusa...mi ero sbagliato....adesso mi da sempre e solo 2!!!!!....Cioč mi
dice che ci sono sempre due cognomi che soddisfano il criterio...
'Azz....e che puň essere??

 ciclo della scansione dell'array è giusto.
No ecco il codice completo di tutto:
COGNOMIMAIN.JAVA
import java.io.*;
class CognomiMain{
  public static void main(String args[]){
    String cognomiCorso[]={"Songohan","Songoku","Vegeta","Piccolo"};
    Cognomi corso=new Cognomi(cognomiCorso);
    try{
     BufferedReader console=new BufferedReader(new
InputStreamReader(System.in));
     System.out.println("\nDigita un cognome da cercare poi premi
<invio>\n");
     String qualcosa=console.readLine();
     //System.out.println("Hai digitato "+qualcosa);
     int risultato=corso.trovaCognome(qualcosa);
     if(risultato==-1)
       System.out.println("Cognome non trovato.\n");
     else
       System.out.println("\nLa posizione di "+cognomiCorso[risultato]+" e'
"+risultato+"\n");
    }
    catch(IOException e){
     System.err.println("Qualcosa è andato storto con la console");
     System.err.println(e.getMessage());
    }
    int numeroCognomi=corso.contaCognomi(0, 's');
    if(numeroCognomi==-1)
      System.out.println("Nessun cognome che soddisfa il criterio\n");
    else
      System.out.println("Il numero dei cognomi che soddisfano il criterio
e': "+numeroCognomi);
    }
}
COGNOMI.JAVA
class Cognomi{
  private String []cognomi;
  public Cognomi(String valori[]){
    cognomi=new String[valori.length]; //Crea un array di oggetti Stringa
                                      //ovvero di puntatori.
    System.out.println("I cognomi inseriti nell'elenco sono:\n");
    for(int i=0;i<cognomi.length;i++){
      cognomi[i]=new String(); //Adesso creo lo spazio per ogni oggetto
stringa
      cognomi[i]=valori[i]; //Adesso riempio lo spazio creato con il valore.
      System.out.println("Indice "+i+"   "+cognomi[i]);
    }
  }
  public int trovaCognome(String valore){
    for(int i=0;i<cognomi.length;i++){
      if(cognomi[i].equals(valore)){
        return i;
      }
    }
    return -1;
  }
  public int contaCognomi(int posizione, char carattere){
   int numero=0;
   for(int i=0;i<cognomi.length;i++){
    char c=cognomi[i].toLowerCase().charAt(posizione);
    if(c==carattere){
     numero++;
     System.out.println(numero);
    }
   }
   if(numero>0){
    return numero;
   }else{
    return -1;
   }
  }
}
Non so che dire....

 wrote in message
QLia8.10457$tv6.2...@twister1.libero.it...


 Songoku
Si, ma qualsiasi cognome ci metto mi da sempre lo stesso risultato...forse
perchè non svuoto il buffer...Sai come si svuota?
Grazie mille cmq ^__^

Per livellare il buffer si usa flush() (anche se il close() dovrebbe
livellarlo automaticamente) ma non penso che sia quello il prova a mettere
un altro cognome che inizia con la lettera S nell'array cognomi. Se non
funziona prova cosě:
COGNOMIMAIN.JAVA
import java.io.*;
class CognomiMain{
  public static void main(String args[]){
    String cognomiCorso[]={"Songohan","Songoku","Vegeta","Piccolo"};
    Cognomi corso=new Cognomi(cognomiCorso);
    try{
     BufferedInputStream console=new BufferedInputStream(System.in);
     DataInputStream din=new DataInputStream(console);
// Le classi derivate da Reader e Writer se non mi sbaglio sono fatte per
// i caratteri Unicode (cioč di 2 byte), essendo il tuo invece un
inserimento da
// riga di comando non so se utilizza i caratteri Unicode, non penso.
     System.out.println("\nDigita un cognome da cercare poi premi
<invio>\n");
     String qualcosa=din.readLine();
     console.flush();
     console.close();
     //System.out.println("Hai digitato "+qualcosa);
     int risultato=corso.trovaCognome(qualcosa);
     if(risultato==-1)
       System.out.println("Cognome non trovato.\n");
     else
       System.out.println("\nLa posizione di "+cognomiCorso[risultato]+" e'
"+risultato+"\n");
    }
    catch(IOException e){
     System.err.println("Qualcosa č andato storto con la console");


[...CUT...]
Perdonamiiiiiiiiiii...............che scemooooo tutto funziona davvero
bene!!!!
L'errore era concettuale: infatti credevo - assai stupidamente - che la
variabile char passata fosse il primo carattere del cognome che inserivo
così che se 
ad.es
. inserivo Vegeta mi aspettavo di vedere comparire come
totale 1.
Ma la variabile passata era nel metodo........ed era sempre 's'....
E infatti adesso tutto funziona!!!
Scusa la mia stupidità, superficialità ed ignoranza.
Tu sei stato gentilissimo, Giancarlo, e ti ringrazio tantissimo!
Grazie mille ancora.