Blocage sur fonction avec tableau en paramètre en java

Fermé
eltheola Messages postés 6 Date d'inscription mercredi 4 mai 2022 Statut Membre Dernière intervention 9 septembre 2022 - 4 mai 2022 à 11:41
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 8 mai 2022 à 17:29
Bonjour,
J'ai un petit problème à l'exécution de mon programme, en fait il compile mais ne renvoi rien et je ne vois pas comment modifier mes paramètres pour afficher quelque chose.
Merci d'avance.


Configuration: Windows / Chrome 101.0.4951.54
A voir également:

3 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
4 mai 2022 à 11:44
Bonjour

Pour poster un code, il faut faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
eltheola Messages postés 6 Date d'inscription mercredi 4 mai 2022 Statut Membre Dernière intervention 9 septembre 2022
4 mai 2022 à 12:15
Bonjour, je ne comprends pas, vous ne voyez pas le code ?
Sinon c'est ça :


package fr.elthe.programme;

public class Main {

public static void main(String[] args) {
System.out.println("fonctionne stp");

}
public static void aro(int [][] M, int [][] A, int [][] G, int K, int S){
if(K==0){
return;
}
int aks=A[K][S];
aro(M,A,G,K-1,S-aks);
System.out.println("entrepot =" + K );
System.out.println("stock livré =" + aks);
System.out.println("gain=" + G[K-1][aks]);
}
static int [][][] calculerMA (int [][] G){
int n=G.length, S=G[0].length-1;
int [][] M = new int [n+1][S+1], A=new int[n+1][S+1];
for(int i =0; S<S+1;S++){
for(int k=1;k<n+1;k++){
for(int s=0;s<n+1;s++){
M[k][s]=-100000000;
for(int sp=1;sp<s+1;sp++){
int mksp=M[k-1][s-sp]+G[k-1][sp];
if(mksp>M[k][s]){
M[k][s]=mksp;
A[k][s]=sp;
}
}
}
}
}
return new int[][][]{M,A};
}


}
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931 > eltheola Messages postés 6 Date d'inscription mercredi 4 mai 2022 Statut Membre Dernière intervention 9 septembre 2022
4 mai 2022 à 12:19
Alors, dans le petit tuto, il est écrit de mettre le code dans les balises et pas après.
Tu peux modifier ton message en cliquant sur les 3 … en bas à droite.

Et avec une image, on ne peut pas copier ton code pour le tester.
0
eltheola Messages postés 6 Date d'inscription mercredi 4 mai 2022 Statut Membre Dernière intervention 9 septembre 2022
4 mai 2022 à 17:31
package fr.elthe.programme;

public class Main {

	public static void main(String[] args) {
		System.out.println("fonctionne stp");

	}
    public static void aro(int [][] M, int [][] A, int [][] G, int K, int S){
        if(K==0){
            return;
        }
        int aks=A[K][S];
        aro(M,A,G,K-1,S-aks);
        System.out.println("entrepot =" +  K );
        System.out.println("stock livré =" + aks);
        System.out.println("gain=" + G[K-1][aks]);
    }
    static int [][][] calculerMA (int [][] G){
        int n=G.length, S=G[0].length-1;
        int [][] M = new int [n+1][S+1], A=new int[n+1][S+1];
        for(int i =0; S<S+1;S++){
            for(int k=1;k<n+1;k++){
                for(int s=0;s<n+1;s++){
                    M[k][s]=-100000000;
                    for(int sp=1;sp<s+1;sp++){
                        int mksp=M[k-1][s-sp]+G[k-1][sp];
                        if(mksp>M[k][s]){
                            M[k][s]=mksp;
                            A[k][s]=sp;
                        }
                    }
                }
            }
        }
        return new int[][][]{M,A};
    }
    

}
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
4 mai 2022 à 20:53
Bonjour,

Un programme Java commence toujours par la méthode
public static void main(String[] args)
mais la tienne ne fait qu'une chose
System.out.println("fonctionne stp");
. Tout le reste n'étant jamais appelé par la méthode main (ni directement, ni transitivement), c'est du code mort dans lequel le programme n'ira jamais.

Pour que ton programme utilise tes deux méthodes, celles-ci doivent donc être appelées par la méthode main, et vu qu'elles utilisent des paramètres il faudra d'abord créer des valeurs à mettre dans ces paramètres. De plus, il faudra récupérer le résultat de tes méthodes et les afficher, sinon tu ne saura pas ce qu'il s'est passé.

Java n'est pas un langage magique, il fera tout ce que tu lui demandes, mais il faut d'abord lui demander tout ce que tu veux faire.
0
eltheola Messages postés 6 Date d'inscription mercredi 4 mai 2022 Statut Membre Dernière intervention 9 septembre 2022
5 mai 2022 à 10:25
Je vois bien qu'il faut l'appeler dans la méthode main mais je n'arrive pas à comprendre comment écrire un paramètre qui est un tableau 2D. Je ne vois pas comment écrire les valeurs que je veux mettre dedans.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié le 6 mai 2022 à 06:51
"je n'arrive pas à comprendre comment écrire un paramètre qui est un tableau 2D"

Un exemple :
int[][] tab = {
    {11, 12, 13},
    {21, 22, 23},
    {31, 32, 33}
};
1
eltheola Messages postés 6 Date d'inscription mercredi 4 mai 2022 Statut Membre Dernière intervention 9 septembre 2022 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
8 mai 2022 à 13:05
petite question supplémentaire, comment je fais pour faire -infini en java ? Car dans calculerMA je mets :
M[k][s]=-100000000;


mais il faudrait mieux que ce soit égale à -infini.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > eltheola Messages postés 6 Date d'inscription mercredi 4 mai 2022 Statut Membre Dernière intervention 9 septembre 2022
8 mai 2022 à 17:29
Mathématiquement, rien n'est égal à l'infini, c'est donc impossible de lui donner une valeur.

Tu peux éventuellement considérer Integer.MIN_VALUE et Integer.MAX_VALUE mais ce sont des nombres comme les autres, des calculs avec ces valeurs ne bénéficient pas des propriétés de l'infini.
0