Tableau java

Résolu
toufalaye04 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'ai écrit une fonction qui retourne l'indice du plus petit élément d'un tableau d'entier mais il me signale une erreur au niveau du 'if' que j'arrive pas à trouver voici mon code lors que je l'éxécute

public static int indiceMIN (int t[],int imin, int imax)
{
int res = imin;
for ( int i = imin + 1;i <= imax;i++)
if (t[i]< t[res]) res=i;
return res;
}
merci d'avance.

A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Au hasard, l'erreur ne serait pas une ArrayOutOfBoundsException ?
La confiance n'exclut pas le contrôle
1
toufalaye04 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
si si c ça mais je comprends pas ça signifie quoi
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Dans le lien que j'ai mis l'exception est clairement expliquée : "L'indice est strictement négatif ou supérieur ou égal à la taille du tableau".
D'ailleurs l'exception doit te donner la valeur de l'indice qui a planté.

Il faudrait voir quelles sont les valeurs de t.length, imin, et imax, pour mieux comprendre. La confiance n'exclut pas le contrôle
0
toufalaye04 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
dans mon cas l'éxéption donne la taille du tableau
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Donc c'est que tu utilises i=t.length, or les indices doivent être compris entre 0 et t.length-1...
0
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
rhaaa marre de me planter à chaque fois parce que je lis que la moitié de la question -_-
je retourne réfléchir au problème ^^'
0
Utilisateur anonyme
 
Salut,

Un truc tout simple:
trier le tableau à l'aide de la méthode sort de la classe Arrays (import java.util.Arrays;):

int[] leTableau = {14, 2, 11, 8, 4, 150, 6, 150, 1, 2, 4, 3, 5, 7, 2, 1, 18};

        Arrays.sort(leTableau); //Tri du tableau en ordre croissant
        System.out.println("mini = " + leTableau[0]);
        System.out.println("maxi = " + leTableau[leTableau.length -1]);


Cordialement,

Dan
-1
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
En triant le tableau tu perds les indices d'origine des minimum et extremum puisque tu vas déplacer les valeurs donc c'est pas judicieux (sans parler de la complexité en O(n.log n) au lieu de O(n))...
0
Utilisateur anonyme
 
Tes extremum remarques désobligeantes sont extremumement pénibles.
C'est la dernière fois que je m'abaisse à te répondre :
-si tu as besoin de conserver l'ordre initial, clône le tableau et trie ce clône !!!...
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Il n'y a pas de raison que j'arrête de critiquer les réponses qui ne sont pas correctes (la solution que tu proposes ne réponds pas au problème). Je me permet ce genre de critique lorsque je les pense constructive, mais ne crois pas que ce soit contre toi, je l'ai également fait avec Vordano dans cette discussion (même s'il a préféré effacer ses messages depuis) et avec d'autres ailleurs.
Si tu les prends comme des griefs personnels alors fais ta mauvaise tête si tu veux, mais je suis sûr que notre "vie" sur le forum serait plus saine si tu comprenais que tu peux tirer profit de mes remarques, de même que je tire profit des remarques qui me sont faites par ci par là dans le forum...
0