Pages: [1]   Go Down
Print
Author Topic: Metodo charAt....  (Read 1217 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« on: 19-02-2009, 16:25:40 »

Non vi posto il codice perchè vorrei provare a farlo io però non mi quadra una cosa, se io ho un'array bidimensionale di stringhe NON frastagliato, e voglio che il programma mi dica se esiste un carattere, devo effettuare una scansione su tutta la MATRICE, il mio problema è che il programma mi fa una scansione solo sul
primo indice di ogni stringa di ogni posizione

Se questo è l'array:
Code:
String [][] A={{"bello", "brutto", "solo"},
                      {"sempre", "magro", "alto"},
     {"nero","giallo"}};




praticamente se scrivo: A[r][k].charAt(0)

mi controlla solo la posizione 0 di ogni stringa, cioè b b s s m a n g.
 come faccio a scansionare le altre posizioni?Huh?Huh???
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #1 on: 19-02-2009, 16:42:53 »

3 for..

Code:
for (int a = 0; a < A.length; a++) {
 for (int b = 0; b < A[a].length; a++) {
  for (int c = 0; c < A[a][b].length; c++) {
   System.out.print(A[a][b].charAt(c) + " ");
  }
 }
}
Il primi 2 cicli per righe e colonne; L'altro scansiona tutte le lettere della parola contenuta in A[a]
Non l'ho provato ma credo sia giusto  pc
« Last Edit: 19-02-2009, 16:44:46 by zElOtO » Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
gaernik
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 114


« Reply #2 on: 19-02-2009, 16:51:18 »

il terzo for dovrebbe essere:

Code:
for (int c = 0; c < A[a][b].length(); c++)

in quanto si riferisce ad una stringa, no? 
Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #3 on: 19-02-2009, 17:03:47 »

Si si si!!! ora funge però c'era un erroe bisognava mettere A[k].length() con le parentesi però non lo capisco, praticamente gli diciamo finchè il carattere c non supera il numero di indici incrementalo???
E poi una cosa io ho scritto questo codice sotto ho messo una domanda da leggere per voi:

Code:
public class capire
{
public static void main(String[] args)
{


String [][] A={{"bello", "brutto", "solo"},
  {"sempre", "magro", "alto"},
{"nero","giallo"}};
  int r,c, k,m;


for (r=0; r<A.length;r++)
{
for (k=0; k<A[r].length;k++)
{
for(c=0; c<A[r][k].length(); c++)
{
                m=A[r][k].charAt(c);
if (m=='z')
System.out.println("Si il carattere è presente");
else System.out.println("No il carattere non c'è");

}
                        }
        }
}

}

in questo modo funziona solo che mi restituisce per ogni indice se c'è o meno, come posso fare il programma in modo che mi controlli l'array e solo alla fine mi dica se un carattere c'è o non c'è?
« Last Edit: 19-02-2009, 17:10:54 by guitarplaying » Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #4 on: 19-02-2009, 17:17:48 »

il terzo for dovrebbe essere:

Code:
for (int c = 0; c < A[a][b].length(); c++)

in quanto si riferisce ad una stringa, no? 

Esattamente, quello è il metodo length() della classe String (per gli array è semplicemente una variabile).

Si si si!!! ora funge però c'era un erroe bisognava mettere A[k].length() con le parentesi però non lo capisco, praticamente gli diciamo finchè il carattere c non supera il numero di indici incrementalo???
E poi una cosa io ho scritto questo codice sotto ho messo una domanda da leggere per voi:

Code:
public class capire
{
public static void main(String[] args)
{


String [][] A={{"bello", "brutto", "solo"},
  {"sempre", "magro", "alto"},
{"nero","giallo"}};
  int r,c, k,m;


for (r=0; r<A.length;r++)
{
for (k=0; k<A[r].length;k++)
{
for(c=0; c<A[r][k].length(); c++)
{
                m=A[r][k].charAt(c);
if (m=='z')
System.out.println("Si il carattere è presente");
else System.out.println("No il carattere non c'è");

}
                        }
        }
}

}

in questo modo funziona solo che mi restituisce per ogni indice se c'è o meno, come posso fare il programma in modo che mi controlli l'array e solo alla fine mi dica se un carattere c'è o non c'è?


Devi fare un metodo che restituisca un boolean (quindi non può essere il main).
Semplicemente togli quelle righe che stampano e metti un controllo del tipo
Code:
if(n=='z') return true;

Poi
Il metodo
Code:
char charAt(int n)
della classe String ti restituisce il carattere alla posizione n-esima della stringa dal quale lo richiami.

Spero di essere stato chiaro
Buono Studio
Dario
Logged

Passa a jabber!
http://jabber.org (il servizio)
http://pidgin.im (il client)

(c'era una volta) www.mytwocent.it
Condividi le tue conoscenze!

linux registered user #449678
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #5 on: 19-02-2009, 17:27:43 »

Ora ci provo grazie...però una cosa mi fa confondere, perchè bisognava mettere le parentesi, non avevamo detto con con gli array la length non ne aveva bisogno?
Forse se io devo vedere la lunghezza dell'array non devo mettere parentesi, ma in quel caso che invece devo verificare la lunghezza delle Stringhe si?
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #6 on: 19-02-2009, 17:37:22 »

Ora ci provo grazie...però una cosa mi fa confondere, perchè bisognava mettere le parentesi, non avevamo detto con con gli array la length non ne aveva bisogno?
Forse se io devo vedere la lunghezza dell'array non devo mettere parentesi, ma in quel caso che invece devo verificare la lunghezza delle Stringhe si?

Si, la lunghezza di una stringa (che è un oggetto String) è ottenibile mediante il metodo
Code:
int length()
della classe String

Gli array non hanno metodi a loro associati ma hanno comunque una "variabile non variabile" length che può essere richiamata tramite il suo nome (e dunque senza parentesi).

Se vogliamo poi scavare nei meandri di java potremmo dire la seguente:
come possiamo rappresentare una stringa? semplicemente come un array di caratteri (chiamiamolo s).
Quale potrebbe essere, dunque, una possibile implementazione del metodo length() della classe String?
Code:
int length()
{
    return s.length;
}
Logged

Passa a jabber!
http://jabber.org (il servizio)
http://pidgin.im (il client)

(c'era una volta) www.mytwocent.it
Condividi le tue conoscenze!

linux registered user #449678
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #7 on: 19-02-2009, 23:57:27 »

guitar leggi la documentazione, il metodo length() della classe String è diversa dall'attributo length del generico array.
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Pages: [1]   Go Up
Print
Jump to: