Pages: [1]   Go Down
Print
Author Topic: Esercizio 16 di eserciziIprova.pdf  (Read 978 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
gaernik
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 114


« on: 19-02-2009, 17:52:00 »

avrei un problemino con questo codice:


Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe e
 *restituisca un boolean che indichi se esiste una coppia di stringhe in S in cui occorre lo stesso
 *carattere. Es.: Input: [ (“abc”, “dewfg”, …), (…), …, (…, “xyfw”, …), …], Output: True.
 */
public class Es16 {

public static boolean metodo(String [][] A ){
boolean coppiaTrovata = false;
for (int i=0;i<A.length;i++){
for (int k=0;k<A[i].length;k++){
for (int i1=0;i<A.length;i++){
for (int k1=0;k1<A[i1].length;k1++){
for (int c=0;c<A[i][k].length();c++){
for (int r=0;r<A[i1][k1].length();r++){
if (A[i][k].charAt(c)==A[i1][k1].charAt(r)){
coppiaTrovata=true;
}
}
}
}
}
}
}
return coppiaTrovata;
}

public static void main (String [] args){

String [][] S = {  {"ab", "cdx", "eee", "fg", "hi"},
   {"lmno", "pq", "rs"},
   {"tu", "vvv", "zzz", "xx"}};


System.out.println(metodo(S));
}
}
mi da questo errore:
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Es16.metodo(Es16.java:10)
at Es16.main(Es16.java:34)

cos'è che mi sfugge? non capisco il perchè.
grazie per l'aiuto 
Logged
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #1 on: 19-02-2009, 17:59:12 »

il problema è nel terzo for.

Code:
for (int i1=0;i<A.length;i++)

crei la variabile i1, controlli la variabile i e incrementi la variabile i, e quindi la variabile i1 rimane sempre a 0.

Controllate quello che scrivete; è la prima regola!
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
gaernik
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 114


« Reply #2 on: 19-02-2009, 18:03:32 »

sì hai ragione,è che eclipse mi segnava l'errore su un'altra riga e quella mi è sfuggita, ora ho risolto, grazie tante 

anzi lo posto corretto se dovesse servire a qualcuno 
Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe e
 *restituisca un boolean che indichi se esiste una coppia di stringhe in S in cui occorre lo stesso
 *carattere. Es.: Input: [ (“abc”, “dewfg”, …), (…), …, (…, “xyfw”, …), …], Output: True.
 */
public class Es16 {

public static boolean metodo(String [][] A ){
boolean coppiaTrovata = false;
for (int i=0;i<A.length;i++){
for (int k=0;k<A[i].length;k++){
for (int i1=0;i1<A.length;i1++){
for (int k1=k+1;k1<A[i1].length;k1++){
for (int c=0;c<A[i][k].length();c++){
for (int r=0;r<A[i1][k1].length();r++){
if (A[i][k].charAt(c)==A[i1][k1].charAt(r)){
coppiaTrovata=true;
}
}
}
}
}
}
}
return coppiaTrovata;
}

public static void main (String [] args){

String [][] S = {  {"aaa", "ccc", "eee", "fff", "hhh"},
   {"lll", "ppp", "rrxr"},
   {"ttt", "vvv", "zzz", "xx"}};


System.out.println(metodo(S));
}
}
« Last Edit: 19-02-2009, 18:05:14 by gaernik » Logged
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #3 on: 19-02-2009, 18:06:22 »

sì hai ragione,è che eclipse mi segnava l'errore su un'altra riga e quella mi è sfuggita, ora ho risolto, grazie tante 

Eclipse? devi usare SciTE o meglio ancora il blocco note di windows o meglio ancora nano di linux...
altrimenti non imparerai mai come si deve! 

saluti
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
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #4 on: 19-02-2009, 20:11:09 »

sì hai ragione,è che eclipse mi segnava l'errore su un'altra riga e quella mi è sfuggita, ora ho risolto, grazie tante 

anzi lo posto corretto se dovesse servire a qualcuno 
Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe e
 *restituisca un boolean che indichi se esiste una coppia di stringhe in S in cui occorre lo stesso
 *carattere. Es.: Input: [ (“abc”, “dewfg”, …), (…), …, (…, “xyfw”, …), …], Output: True.
 */
public class Es16 {

public static boolean metodo(String [][] A ){
boolean coppiaTrovata = false;
for (int i=0;i<A.length;i++){
for (int k=0;k<A[i].length;k++){
for (int i1=0;i1<A.length;i1++){
for (int k1=k+1;k1<A[i1].length;k1++){
for (int c=0;c<A[i][k].length();c++){
for (int r=0;r<A[i1][k1].length();r++){
if (A[i][k].charAt(c)==A[i1][k1].charAt(r)){
coppiaTrovata=true;
}
}
}
}
}
}
}
return coppiaTrovata;
}

public static void main (String [] args){

String [][] S = {  {"aaa", "ccc", "eee", "fff", "hhh"},
   {"lll", "ppp", "rrxr"},
   {"ttt", "vvv", "zzz", "xx"}};


System.out.println(metodo(S));
}
}

l'esercizio nn è esatto al 100%.. eseguendo il debug di qst codice ed aggiungendo dei system.out.print per conoscere gli indici di riga e di colonna del risultato finale si intuisce che l'esercizio è casualmente giusto.. 
guardate lo stesso esercizio solo cn il nome delle variabili diverse e la sistemazione delle stringhe nell'array bidimensionale diverse e vedete il risultato ke da.. .. .. riflettendo dovrebbe trovare prima l'occorrenza della "e" e poi seguentemente quella della "f".. invece col codice del nostro collega (sempre quello risproposto) nn è proprio esatto  no :

Code:
public class Es16
  {
    public static boolean metodo(String [][] A )
      {
      boolean coppiaTrovata = false;
     
      for (int r=0;r<A.length;r++)
        {
        for (int c=0;c<A[r].length;c++)
          {
          for (int r1=0; r1<A.length;r1++)
            {
            for (int c1=c+1; c1<A[r1].length;c1++)
              {
              for (int Char=0;Char<A[r][c].length();Char++)
                {
                for (int Char1=0;Char1<A[r1][c1].length();Char1++)
                  {
                  if (A[r][c].charAt(Char)==A[r1][c1].charAt(Char1))
                    {
                    coppiaTrovata=true;
                    System.out.println(A[r][c].charAt(Char)+" "+ r +" "+ c +" -- " +
                                       A[r1][c1].charAt(Char1) +" " + r1 +" "+ c1);
                    }
                  }
                }
              }
            }
          }
        }
      return coppiaTrovata;
      }

public static void main (String [] args){

String [][] S = {  {"aaa", "ccc", "eee", "fff", "hhh"},
                           {"flll", "eppp", "rrr"},
                           {"ttt", "vvv", "zzz", "xx"} };


System.out.println(metodo(S));
}
}

diffidate dai codici un pò errati  univ yoh
Logged

Pages: [1]   Go Up
Print
Jump to: