Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema non legge funzioni successive

    Salve a tutti, sto cercando di fare un programma(JAVA) che contiene varie funzioni "concatenate" ma il problema è che solo esegue la prima funzione (primoAngolo) e non la seconda nell'altre a seguire come
    ripristina().
    Il programma legge una matrice calcola determinate cose e dopo che ha fatto questo dovrebbe essere chiamata la funzione rispristina() ma il programma non accede propio dentro(ho fatto varie stampe).
    grazie
    codice:
    public int primoAngolo()
    	{
    		int contoPrimoAngolo=0;
    	//	System.out.println("primo angolo"+ " "+contoPrimoAngolo);
    
    
    
    
    		for(int i=0; i<riga;i++)
    		{
    			for(int j=0; j<colonna;j++)
    			{
    				if(matrix[i][j].equals("*"))
    				{
    					if(j+1<colonna)
    					{
    						if(matrix[i][j+1].equals("*") && matrix[i][j].equals("*"))
    						{
    							contoPrimoAngolo++;
    							matrix[i][j]=matrix[i][j+1]="@";
    							System.out.println("primoangolo"+ " "+contoPrimoAngolo);
    						}
    
    
    					}
    					 if(i+1<riga){
    						if(matrix[i+1][j].equals("*")&& matrix[i][j].equals("*")){
    							contoPrimoAngolo++;
    							matrix[i][j]=matrix[i+1][j]="@";
    							System.out.println("primoangolo"+ " "+contoPrimoAngolo);
    
    
    						}
    					}
    				}
    			}
    		
    		}
    		return contoPrimoAngolo;
    	}// chiude funzione
    	
    	
    	
    
    
    	
    	public void ripristina(){
    		System.out.println("holaaaa");
    		for(int i=0; i<riga; i++){
    			for(int j=0; j<colonna; j++){
    				if(matrix[i][j].equals("@")){
    					matrix[i][j]="*";
    					
    				}
    			}
    		}
    	}
    	
    	
    	
    	public int secondoAngolo()
    	{
    		int contoSecondoAngolo=0;
    
    
    		for(int i=0; i<riga;i++)
    		{
    			for(int j=colonna-1; j<colonna && j>=0;j--)
    			{
    				if(matrix[i][j].equals("*"))
    				{
    					if(j+1<colonna)
    					{
    						
    
    
    						if(matrix[i][j+1].equals("*") && matrix[i][j].equals("*"))
    						{
    							System.out.println("minchia");
    							contoSecondoAngolo++;
    							matrix[i][j]=matrix[i][j+1]="@";
    							System.out.println("secondooooo"+ " "+contoSecondoAngolo);
    						
    							
    						}
    
    
    					}
    					 if(i+1<riga){
    						if(matrix[i+1][j].equals("*")&& matrix[i][j].equals("*")){
    							contoSecondoAngolo++;
    							matrix[i][j]=matrix[i+1][j]="@";
    							System.out.println("secondoooooo"+ " "+contoSecondoAngolo);
    						}
    					}
    				}
    			}
    		
    		}
    		return contoSecondoAngolo;
    	}//
    
    
    	public void ripristina2(){
    		for(int i=0; i<riga; i++){
    			for(int j=0; j<colonna; j++){
    				if(matrix[i][j].equals("@")){
    					matrix[i][j]="*";
    				}
    			}
    		}
    	}
    	
    	public int terzoAngolo()
    	{
    		int contoTerzoAngolo=0;
    		
    
    
    		for(int i=riga-1; i< riga && i >=0;i--)
    		{
    			for(int j=0; j<colonna;j++)
    			{
    				if(matrix[i][j].equals("*"))
    				{
    					if(j+1<colonna)
    					{
    						if(matrix[i][j+1].equals("*") && matrix[i][j].equals("*"))
    						{
    							contoTerzoAngolo++;
    							matrix[i][j]=matrix[i][j+1]="@";
    							System.out.println("terzzzooooooooo"+ " "+contoTerzoAngolo);
    							
    						}
    
    
    					}
    					 if(i+1<riga){
    						if(matrix[i+1][j].equals("*")&& matrix[i][j].equals("*")){
    							contoTerzoAngolo++;
    							matrix[i][j]=matrix[i+1][j]="@";
    							System.out.println("terzzzoooooooooo"+ " "+contoTerzoAngolo);
    						}
    					}
    				}
    			}
    		
    		}
    		return contoTerzoAngolo;
    	}//

  2. #2

    Moderazione

    Per Java c'è una sezione apposita; sposto il thread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Il codice che hai inserito è incompleto, manca il metodo principale della classe (public static void main(String[] argomento))e le varie funzioni non si richiamano tra di loro, come facciamo a sapere il modo in cui volevi legarle?

    Inserisci il codice completo e vediamo di darti una mano

  4. #4
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Il codice che hai inserito è incompleto, manca il metodo principale della classe (public static void main(String[] argomento))e le varie funzioni non si richiamano tra di loro, come facciamo a sapere il modo in cui volevi legarle?

    Inserisci il codice completo e vediamo di darti una mano

    main:

    codice:
    public class Main {
    
    
        public static void main(String[] args) throws IOException {
            BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
            String comincia;
            int nT=0;
            comincia=input.readLine();
            while(!comincia.equals("-1"))
            {
                nT++;
                comincia=input.readLine();
                String [] array=comincia.split(" ");
                int riga=Integer.parseInt(array[0]);
                int colonna=Integer.parseInt(array[1]);
                Matrice matrice=new Matrice(riga, colonna);
                matrice.input(input);
                
                int ris=matrice.numeroTorri();
                System.out.println("result "+nT);
                System.out.println(ris);
                comincia=input.readLine();
            }
    
    
        }
    
    
    }
    classe Matrice:

    codice:
    
    import java.io.BufferedReader;
    import java.io.Console;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.nio.Buffer;
    
    
    public class Matrice {
        String matrice[][];
        int riga, colonna;
        int cont;
    
    
        
        
        public Matrice(int riga, int colonna) 
        {
            this.colonna=colonna;
            this.riga=riga;
            cont=0;
            matrice=new String[riga][colonna];
        }
        
        public void input(BufferedReader input) throws IOException
        {
            String array[]=new String[colonna];
            for(int i=0; i<riga; i++)
            {
                String x=input.readLine();
                array=x.split(" ");
                for(int j=0; j<colonna; j++)
                {
                    matrice[i][j]=array[j];
                    
                }
            }
        }
        
    
    
    
    
        public int controlloSoli()
        {
            int tot=0;
            for(int i=0; i<riga; i++)
            {
                for(int j=0; j<colonna;j++)
                {
                    if(matrice[i][j].equals("*"))
                    {
                        matrice[i][j]="C";
                        tot++;
                    }
                }
            }
            System.out.println("il totale e"+" "+tot);
            return tot;
        }
    
    
    
    
        public int primoAngolo()
        {
            int contoPrimoAngolo=0;
        //    System.out.println("primo angolo"+ " "+contoPrimoAngolo);
    
    
    
    
            for(int i=0; i<riga;i++)
            {
                for(int j=0; j<colonna;j++)
                {
                    if(matrice[i][j].equals("*"))
                    {
                        if(j+1<colonna)
                        {
                            if(matrice[i][j+1].equals("*") && matrice[i][j].equals("*"))
                            {
                                contoPrimoAngolo++;
                                matrice[i][j]=matrice[i][j+1]="C";
                                System.out.println("primoangolo"+ " "+contoPrimoAngolo);
                                stampa();
                            }
    
    
                        }
                         if(i+1<riga){
                            if(matrice[i+1][j].equals("*")&& matrice[i][j].equals("*")){
                                contoPrimoAngolo++;
                                matrice[i][j]=matrice[i+1][j]="C";
                                System.out.println("primoangolo"+ " "+contoPrimoAngolo);
    
    
                            }
                        }
                    }
                }
            
            }
            return contoPrimoAngolo;
        }// chiude funzione
        
        
        
    
    
        
        public void ripristina()
        {
            System.out.println("holaaaa");
            for(int i=0; i<riga; i++)
            {
                for(int j=0; j<colonna; j++)
                {
                    if(matrice[i][j].equals("C"))
                    {
                        matrice[i][j]="*";
                        
                    }
                }
            }
        }
        
        
        
        public int secondoAngolo()
        {
            int contoSecondoAngolo=0;
    
    
            for(int i=0; i<riga;i++)
            {
                for(int j=colonna-1; j<colonna && j>=0;j--)
                {
                    if(matrice[i][j].equals("*"))
                    {
                        if(j+1<colonna)
                        {
                            
    
    
                            if(matrice[i][j+1].equals("*") && matrice[i][j].equals("*"))
                            {
                           
                                contoSecondoAngolo++;
                                matrice[i][j]=matrice[i][j+1]="C";
                                System.out.println("secondooooo"+ " "+contoSecondoAngolo);
                            
                                
                            }
    
    
                        }
                         if(i+1<riga)
                         {
                            if(matrice[i+1][j].equals("*")&& matrice[i][j].equals("*"))
                            {
                                contoSecondoAngolo++;
                                matrice[i][j]=matrice[i+1][j]="C";
                                System.out.println("secondoooooo"+ " "+contoSecondoAngolo);
                            }
                        }
                    }
                }
            
            }
            return contoSecondoAngolo;
        }//
    
    
        public void ripristina2()
        {
            for(int i=0; i<riga; i++)
            {
                for(int j=0; j<colonna; j++)
                {
                    if(matrice[i][j].equals("C"))
                    {
                        matrice[i][j]="*";
                    }
                }
            }
        }
        
        public int terzoAngolo()
        {
            int contoTerzoAngolo=0;
            
    
    
            for(int i=riga-1; i< riga && i >=0;i--)
            {
                for(int j=0; j<colonna;j++)
                {
                    if(matrice[i][j].equals("*"))
                    {
                        if(j+1<colonna)
                        {
                            if(matrice[i][j+1].equals("*") && matrice[i][j].equals("*"))
                            {
                                contoTerzoAngolo++;
                                matrice[i][j]=matrice[i][j+1]="C";
                                System.out.println("terzzzooooooooo"+ " "+contoTerzoAngolo);
                                
                            }
    
    
                        }
                         if(i+1<riga)
                         {
                            if(matrice[i+1][j].equals("*")&& matrice[i][j].equals("*"))
                            {
                                contoTerzoAngolo++;
                                matrice[i][j]=matrice[i+1][j]="C";
                                System.out.println("terzzzoooooooooo"+ " "+contoTerzoAngolo);
                            }
                        }
                    }
                }
            
            }
            return contoTerzoAngolo;
        }//
    
    
        
        public void ripristina3()
        {
            for(int i=0; i<riga; i++)
            {
                for(int j=0; j<colonna; j++)
                {
                    if(matrice[i][j].equals("C"))
                    {
                        matrice[i][j]="*";
                    }
                }
            }
        }
        
        public int quartoAngolo()
        {
            int contoQuartoAngolo=0;
    
    
            for(int i=riga-1; i< riga && i >=0;i--)
            {
                for(int j=colonna-1; j<colonna && j >=0;j--)
                {
                    if(matrice[i][j].equals("*"))
                    {
                        if(j+1<colonna)
                        {
                            if(matrice[i][j+1].equals("*") && matrice[i][j].equals("*"))
                            {
                                contoQuartoAngolo++;
                                matrice[i][j]=matrice[i][j+1]="C";
                                System.out.println("qua22222ooooo"+ " "+contoQuartoAngolo);
                                stampa();
                                
                            }
    
    
                        }
                             if(i+1<riga)
                             {
                                 if(matrice[i+1][j].equals("*")&& matrice[i][j].equals("*"))
                                 {
                                     contoQuartoAngolo++;
                                         matrice[i][j]=matrice[i+1][j]="C";
                                         System.out.println("quartoooooooo"+ " "+contoQuartoAngolo);
                                    
                                 }
                              }
                        }
                }
            
            }
            
            return contoQuartoAngolo;
        }//
    
    
        
        
        
        
        
        public int numeroTorri()
        {
            int counter1,counter2,counter3,counter4,risultato=0;
            counter1=counter2=counter3=counter4=0;
            
            
            //counter uno è 4
            
        counter1=primoAngolo();
            counter1+=controlloSoli();
            
            
            
            // counter 2 è 4pure
        counter2=secondoAngolo();
            counter2+=controlloSoli();
            
            
            
            // counter 3 è pure 4
            counter3=terzoAngolo();
            counter3+=controlloSoli();
            
            
            //counter 4 è 3 risposta essatta
            counter4=quartoAngolo();
            counter4+=controlloSoli();
            
            
            
    
    
        
            if(counter1<counter2 && counter1 <counter3 && counter1<counter4)
            {
                System.out.println("quarta"+ " "+ counter4);
    
    
                 risultato= counter1;
            }
            if(counter2<counter1 && counter2< counter3 && counter2<counter4)
            {
                System.out.println("quarta"+ " "+ counter4);
    
    
                risultato= counter2;
            }
            
            if(counter3<counter1 && counter3<counter2 && counter3 <counter4)
            {    
                
                risultato= counter3;
            }
            
            if(counter4<counter1 && counter4<counter2 && counter4 <counter3)
            {    
                risultato= counter4;
                System.out.println("quarta"+ " "+ counter4);
            }
            
    return risultato;
        }
        
        
        
        
        public void stampa()
        {
            for(int i=0; i<riga; i++){
                System.out.println();
                for(int j=0; j<colonna; j++){
                    System.out.print(matrice[i][j]);
                    }
    
    
                }    
        }
        
    
    
    } // chiude classe

  5. #5
    in pratica: parte la prima funzione controllaSoli(), fa quello che deve fare, dopo si avvia la funzione primoAngolo(), quando trova quello che deve trovare al posto di "*" mette "C" (controllata), puoi dovrebbe partire la funzione ripristina() perche ho bisogno della matrice con gli "*" e cosi successivamente per il resto delle funzioni che sono sotto, ma mi sono reso contro che non funziona il metodo rispristina() e non va piu avanti

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Prima domanda: i metodi ripristina(), ripristina2() e ripristina3() sono perfettamente identici, quindi perchè crearne tre? Boh...
    Poi: in tutto il codice che hai postato non chiami da nessuna parte i metodi ripristina(), ripristina2() e ripristina3()... non ti aspettare che lo faccia arbitrariamente la JVM... la JVM fa quello che gli dici tu e tu non gli stai dicendo da nessuna parte di eseguire quei metodi.


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Innanzitutto hai scritto del codice abbastanza confuso, dovresti fare molte più stampe nei passaggi cruciali, e soprattutto prima di inserire gli input, visto che non si sa bene cosa devi inserire (ad esempio tanto per dirne una il primo input che leggi non lo utilizzi)

    Quote Originariamente inviata da marcos666 Visualizza il messaggio
    puoi dovrebbe partire la funzione ripristina() perche ho bisogno della matrice con gli "*" e cosi successivamente per il resto delle funzioni che sono sotto, ma mi sono reso contro che non funziona il metodo rispristina()
    Il metodo ripristina() non viene richiamato da nessuna parte, non capisco come fai a dire che non funzioni...

    Quote Originariamente inviata da marcos666 Visualizza il messaggio
    e non va piu avanti
    Il motivo per cui non va più avanti dopo aver eseguito il metodo numeroTorri() è solo il fatto che attende ancora input...

    Spero di non aver frainteso il problema, ma non è molto più chiaro ora...

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.