PDA

Voir la version complète : Problème java



Sylvine
01/12/2007, 14h42
Contrairement à ce que pourrait laisser entendre le jeu de mot vaseu de la description du sujet, il est bien question ici de langage java.
J'ai un truc en java à faire poour un TD, et pour une raison inconnue ça marche pas comme ça devrait.

Voilà la fonction:

function trouver_min(tableau,val_min)
{
val_min=tableau[0]
for (var i=0;i<compteur;i++)
{
if (tableau[i]<val_min){
val_min=tableau[i];
}
}
alert(val_min);
return val_min;
}

Il s&#39;agit, vous l&#39;aurez compris, de trouver la valeur minimum d&#39;un tableau.
Or quand il y a une valeur comprise entre 10 et 20 dans mon tableau, la fonction n&#39;admet pas de minimum inferieur à 10.
Je m&#39;explique, si je met 50, 40 et 3, pas de problème, la fonction va me renvoyer 3.
Avec 2000, 35 et 12, logiquement j&#39;obtient 12.
Par contre pour 27, 15 et 5 la réponse est 15, allez savoir pourquoi.

Quelqu&#39;un à une idée de où vient le problème?
Sinon si tu est blonde à forte poitrine tu m&#39;interesse aussi.

XWolverine
01/12/2007, 14h48
Parce que c&#39;est un tableau de char (je connais pas java, mais il compare en chaine de caractère, quoi, 15 commence par "1", qui est inférieur à "5" ) ?

Sinon, pas la peine de commencer ta boucle à 0, puisque tu l&#39;as déjà mise dans ta val min, commence à 1.

Sylvine
01/12/2007, 14h55
Parce que c&#39;est un tableau de char (je connais pas java, mais il compare en chaine de caractère, quoi, 15 commence par "1", qui est inférieur à "5" ) ?
:unsure:
Bien, bien, bien.


Bon, tu as passé la première épreuve, question suivante: on fait comment pour le faire passer en tableau de variable?

Flaggados
01/12/2007, 15h13
t&#39;as pas une accolade &#39;}&#39; en trop dans ta fonction là ?

Sylvine
01/12/2007, 15h16
t&#39;as pas une accolade &#39;}&#39; en trop dans ta fonction là ?
Non.
3 ouvrante 3 fermantes.

Sinon pour mon tableau de valeurs, je presume que ça doit être au niveau du code HTML que ça se règle.

Flaggados
01/12/2007, 15h24
on fait comment pour le faire passer en tableau de variable?
il est créé comment ton tableau ? tu le déclare comment ?

EDIT :

Pour transformer une String en Integer, cherche du côté de la fonction decode(string nm) (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html#decode(java.lang.String))... ;)

b0b0
01/12/2007, 15h26
tu fais le canard à l&#39;orange je te donne la réponse

XWolverine
01/12/2007, 15h42
Bon, tu as passé la première épreuve, question suivante: on fait comment pour le faire passer en tableau de variable?
Aucune idée, jamais codé en java. Solution déduite de tes exemple et cas classique :happy2:

Sylvine
01/12/2007, 16h10
Ok, j&#39;ai trouvé!
Bon, on va dire un pote à trouvé...

Il suffisait de rajouter parseInt avant le tableau pour qu&#39;il le gère comme une suite de variables et pas de caractères.

function trouver_min(tableau,val_min)
{
val_min=tableau[0]
for (var i=1;i<compteur;i++)
{
if (parseInt(tableau[i])<val_min){
val_min=tableau[i];
}
}
alert(val_min);
return val_min;
}

Coin-Coin
01/12/2007, 16h16
J&#39;allais le dire...

Mars2
01/12/2007, 17h50
parseInt

Sylvine
01/12/2007, 21h46
Bon ba hop, j&#39;en profite, nouveau problème.
Je veux faire une fonction toute conne qui additionne toutes les valeurs d&#39;un tableau.
Donc je fais ça:
function addition_tableau(tableau,total)
{
x=0;
for (var i=0;i>compteur;i++){
(x)=(x)+tableau[i];
}
alert(x);
}
Mais ça marche pas, j&#39;obtiens toujours 0.
Pas de problèmes me dis-je, ça doit être le même problème que tout à l&#39;heure.
function addition_tableau(tableau,total)
{
x=0;
for (var i=0;i>compteur;i++){
parseInt(x)=parseInt(x)+parseInt(tableau[i]);
}
alert(x);
}

Mais ça marche toujours pas. :|

Des idées?

Mars2
01/12/2007, 22h16
J&#39;installe xCode et je te dis ça, ou pas...
Fais ton canard a l&#39;orange feignasse

Bon j&#39;ai pas installe xCode, je l&#39;es fait avec Emacs :ninja:

class Somme
{
public static void main(String args[])
{
int tab[] = {5, 10, 15, 20, 25};
int i=0;
int somme=0;
for(i=0;i<tab.length;i++){
somme = somme + tab[i];
}
System.out.println(somme);
}
}

DaP
01/12/2007, 22h27
Ton code ne compile pas chez moi (edit : mais mon JDK machin pouet ne doit pas être à jour). C&#39;est quoi ce mystérieux compteur, pas une variable globale quand même ? Comme ça au pif, je mettrais "i < compteur" dans la condition dur for. Tu ne devrais pas utiliser total quelque part ?
Et indente ton code, tu me remercieras plus tard. ;)

Sylvine
01/12/2007, 22h34
Hahaha.
Je viens de me rendre compte que j&#39;ai dis Java au lieu de javascript, c&#39;est ammusant quand même non?
:unsure:

Bon, je présume que c&#39;est pour ça que je comprends pas la moitié de ton truc Mars.

(et je bosse sur le Canard, mais chut :ninja: )

Mars2
01/12/2007, 22h55
Je comprenais pas le alert, parce que je me disais que c&#39;est du JS....
Et puis la function en Java il connait pas ....


Attend en JS c&#39;est encore plus simple....

function Somme (tab){
int somme;
int i =0;

for (i=0;i<tab.length;i++){
somme = somme + tab[i];
}
alert (somme);
}

Sinon il te met quoi la console d&#39;erreur JS?
J&#39;ai pas essayer mon code, je l&#39;es ecris sur le forum en direct, mais je pense qu&#39;il est bon....


Ton code ne compile pas chez moi (edit : mais mon JDK machin pouet ne doit pas être à jour). C&#39;est quoi ce mystérieux compteur, pas une variable globale quand même ? Comme ça au pif, je mettrais "i < compteur" dans la condition dur for. Tu ne devrais pas utiliser total quelque part ?
Et indente ton code, tu me remercieras plus tard. ;)


C&#39;est tout simplement du JS et non du Java, Merci Sylvine...
Ecoute de temps en temps les cours, ça peut servir... hein



En JS sa donne

<html>
<head>
<title>Test Javascript</title>
</head>
<script>
var tab = new Array();
tab[0]=5;
tab[1]=15;
var i=0;
var somme=0;

for(i=0;i<tab.length;i++){
somme = somme + tab[i];
}
alert(somme);
</script>
<body>
</body>
</html>


Je pense que tu merdes au niveau de l&#39;initialisation du tableau

Sylvine
01/12/2007, 23h19
Bon, on progresse.
Grâce à ton truc j&#39;arrive à obtenir un resulat, alors qu&#39;avant ce con restait sur 0.
function addition_tableau(tableau,total)
{
somme=0;
for(i=0;i<tableau.length;i++){
somme=somme+tableau[i];
}
alert(somme);
}
Le problème c&#39;est qu&#39;il fait comme tout à l&#39;heure, il fait comme si c&#39;était des caractères et pas de variables, donc j&#39;obtiens 10+10=01010.

J&#39;ai essayé d&#39;écrire parseInt(somme)=parseInt(somme)+parseInt(tableau[i]) comme tout à l&#39;heure, mais apparament la syntaxe lui plait pas.

Mars2
01/12/2007, 23h20
Comment tu initialises ton tableau?

Sylvine
01/12/2007, 23h23
Sur la fiche HTML j&#39;ai ça:
<script type="text/javascript">
var tableau=[];
</script>

Mars2
01/12/2007, 23h26
La syntaxe ordinaire est


var tab = new Array();

Feignasse :ninja:

Code propre et tu me remercieras un jour

Sinon comment tu fais pour rentrer les variables dans ton tableau

Sylvine
01/12/2007, 23h32
Partie HTML:


<label for="champage">Age:<input type="text" size="20" id="age"/></label>
<input type="button" accesskey="a" name="Envoisage" value="Envois" Onclick="compteur=entre_age_tableau(age.value,compteur,tabl eau)" /></p>

Partie java script:
function entre_age_tableau(age,compteur,tableau)
{
tableau[compteur]=age;
compteur++;
return compteur;
}

Mars2
01/12/2007, 23h44
Je comprends pas ton code...
Tu veux faire quoi exactement???

Sylvine
01/12/2007, 23h54
On a une page HTML avec un champ de saisie où on rentre des valeurs.
Quand on clique sur un bouton la valeur est ajoutée au tableau.
Moi tout ce que je veux faire c&#39;est qu&#39;en cliquant sur un autre bouton on additionne toutes les valeurs du tableau.

Mars2
01/12/2007, 23h56
Avant de le faire rentre dans le tableau il faut que le convertisse en Int avec un parseInt.

Mars2
01/12/2007, 23h56
double post

Sylvine
01/12/2007, 23h57
Avant de le faire rentre dans le tableau il faut que le convertisse en Int avec un parseInt.
Je dis pas non.
On fait comment?
Un script javasctipt inséré dans la page HTML?

Flaggados
02/12/2007, 00h00
Hahaha.
Je viens de me rendre compte que j&#39;ai dis Java au lieu de javascript, c&#39;est ammusant quand même non?
:unsure:

Hum... c&#39;est pour ça... t&#39;aurais pas pu le dire plus tôt ? :P ça t&#39;as pas étonné le lien vers la javadoc ?

Bon, allez, on te pardonne, mais la prochaine fois, arrête le crack avant de coder... ^_^

b0b0
02/12/2007, 00h01
Java, qu&#39;est-ce que tu fais là Entre les deux bras D&#39;un accordéoniste ? Faut pas t&#39;gaspiller comme ça Avec tous les gars Qui s&#39;prennent pour des artistes

Mars2
02/12/2007, 00h06
tu es d&#39;accord que tu dois avoir un truc du genre

<html>
<head>
<title></title>
<script>
function init(){
var tab = new Array();
var compteur = 0;
var somme = 0;
}
function ajout(form){
tab[(compteur)]= parseInt(form.toto.value);
compteur ++;
}
function somme(){
//ensuite tu fais la boucle pour faire la somme
}
</script>
</head>
<body onload="init()">
<form name="form1">
Entier <input type="text" name="toto" />
<input type="button" value="ajouter" onclick="ajout(this.form);" />
<input type="button" value="somme" onclick="somme();" />
</form>
<body>
</html>

je pense qu&#39;il y a des erreurs, mais la je regarde une serie donc je vais pas le coder, pour te le filer ensuite...
D&#39;abord la serie ensuite peut etre toi...

b0b0
02/12/2007, 00h07
en tout cas le java c&#39;est pas dl&#39;a menthe à l&#39;eau

Mars2
02/12/2007, 00h29
Tu dois renvoyer tab dans init() et ensuite le recuperer comme parametre dans les fonctions suivantes

b0b0
02/12/2007, 00h30
java l&#39; dire à tout le monde

Mars2
02/12/2007, 00h33
Taggle b0b0, y&#39;en a qui bosse ici … ou pas …

Sylvine
02/12/2007, 00h33
Je comprends pas ce passage.

function ajout(form){
tab[(compteur)]= parseInt(form.toto.value);
compteur ++;
C&#39;est quoi le (form.toto.value)?
toto c&#39;est le nom de la valeur saisie, c&#39;est pour dire que c&#39;est une valeur, mais le form c&#39;est quoi?

Mars2
02/12/2007, 00h35
Le form designe le formulaire...

J&#39;appelle la fonction avec un ajout(this.form) ce qui veut dire que je met comme argument de la fonction ajout le formulaire (les balises form) et je designe la valeur du champ toto par form.toto.value.

Voila c&#39;est tout c&#39;est pas complique...

Daeke
02/12/2007, 01h27
J&#39;ai essayé d&#39;écrire parseInt(somme)=parseInt(somme)+parseInt(tableau[i]) comme tout à l&#39;heure, mais apparament la syntaxe lui plait pas.
Je sais pas si tu as déjà programmé autre chose que du JS mais tu ne peux pas donner de valeur à parseInt(somme).
Essaye plutôt avec "somme = parseInt(somme) + parseInt(tableau[i])".

Sylvine
02/12/2007, 10h41
Je sais pas si tu as déjà programmé autre chose que du JS mais tu ne peux pas donner de valeur à parseInt(somme).
Ba je débute, on a eu quelque cours là dessus mais il me semble pas avoir déjà entendu parler de ce "parseInt".

Ou peut-être que je dormais en amphi :siffle:

En tout cas merci à tout le monde, mais vous éloignez pas trop, le TP est pas fini.
:cassecouille: