à supprimer
Version imprimable
à supprimer
Affichage : pour X = 261Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class NewClass { public static void main (String[] args){ double x = 261; double pas = x/10; System.out.println("Pas de : "+pas); double temp=0; for(int i=0;i<x;i++){ if(i>temp){ double a = (temp/pas)*10;//On recupère le pourcentage //Si le pourcentage est par exemple 89%, on arrondi à 90% a /= 10; a = (int) (a+.5); a *= 10; //Affichage System.out.println((int)a+"%"+" | temp = "+temp); //On rajoute 10% temp +=pas; } //Condition final if(i==x-1){ System.out.println("100% | temp = "+temp); } } } }
Si c'est bien ça que tu demande? ;)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Pas de : 26.1 0% | temp = 0.0 10% | temp = 26.1 20% | temp = 52.2 30% | temp = 78.30000000000001 40% | temp = 104.4 50% | temp = 130.5 60% | temp = 156.6 70% | temp = 182.7 80% | temp = 208.79999999999998 90% | temp = 234.89999999999998 100% | temp = 261.0
Exactement, je suis content d'avoir réussi à me faire comprendre :) Ton algo est nickel, sauf X qui est double, temp je ne l'affiche pas, je n'affiche que le taux en %.
Un seul cas qui ne marche pas : quand le nombre X est <10 , mais il n'y pas grand chose à changer pour rectifier ça, je regarderai ça demain, là je vais aller me coucher :)
Bonne nuit et encore merci ;)
quel est l'intérêt de ton message à part flooder ?
Je retire ce que j'ai dit hier soir à propos d'exemple <10 qui ne marchait pas. Il faut que je mette mon X en double et là ça marche. Mais en y regardant de plus près, ce n'est pas exactement ce que je voulais obtenir, en fait ce que je voulais c'est que pour n'importe quel X, j'ai les 11 étapes (0%,10%,20%...100%) qui s'affiche, même pour un nombre comme 3 par exemple, avec ton code pour 3 j'obtient : 0% , 10% , 100%. Je me demandais si il ne serait pas possible d'afficher 0% 10% 20%...100% même pour 3, je conçois que ça soit difficile puisque qu'on a que trois étapes donc on ne peut créer que 3 trucs : 0, 10, 100 par exemple avec ton code, mais peut être peut t'on créer 3 trucs qui sont 0 | 10 20 30 40 50 | 60 70 80 90 100 ...
Enfin au moins ton code marche dans tous les cas:mouarf:
Salut jujusous3,
Pour l'affichage des temp c'était juste une vérification pour voir que ça marchait bien :ccool:
Après pour un x<3, afficher les 11 "%" ... J'ai pas d'idée précise là tous de suite, c'est le matin aussi :aie:
Il faudrait mettre une seconde condition pour le temp+=pas.
A méditer...
C'est vrai que je chipote, c'est que dans ma tête je me dis que dans n'importe quel programme, quand il y a un chargement, même si c'est très court, on a un avancement de 0 à 100 dans tous les cas, ça avance juste plus ou moins vite...
Je l'ai un peu modifié. ça devrais le faire maintenant :DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 /** * * @author Ivelios */ public class NewClass { public static void main (String[] args){ double x = 3; double pas = x/10; System.out.println("Pas de : "+pas); double temp=0; int i = 0; double a =0; while(i<=x){ if(i>=temp){ a = (temp/pas)*10;//On recupère le pourcentage //Si le pourcentage est par exemple 89%, on arrondi à 90% a /= 10; a = (int) (a+.5); a *= 10; //Affichage System.out.println((int)a+"%"+" | temp = "+temp); //On rajoute 10% temp +=pas; }else{ i++; } } //Parfois le dernier cas n'est pas pris en compte donc on l'ajoute si c'est le cas if((int) a!= 100){ System.out.println("100% | temp = "+temp); } } }
Bon, j'vais prendre une douche moi... devant le pc dès le réveil :aie: sérieux faut vraiment que j'arrête ...
^^Je me dis la même chose.
Ton code marche nickel, je suis en train de l'adapter, parce que maintenant il n'exécute plus X fois la boucle, en fait j'ai un traitement à effectuer 3 fois, si j'utilise ta boucle, il me le fait 11 fois :aie: Plus titilleux tu meurt !
En faite, tu peux faire beaucoup mais beaucoup plus simple...
si x = 15 par exemple.
Il te suffit de faire une boucle de 150 (15*10)
dans un tableau tu calcul et tu range tes tempAprès au lieu de te faire une boucle de 15 il t'en fait une de 150 => 10*plus de ressources mais bon... ça devrait prendre environ 0,0001ms de plus:aie:Code:
1
2
3
4
5
6
7
8 int[] temp = {0,15,30,45,...,150} int indiceTab = 0; for(int i=0;i<=150;i++){ if(i==temp[indiceTab]){ System.out.println(indiceTab+"0%"); indiceTab++; } }
C'est sur c'est plus court:mrgreen:Mais ça sous entend que tu crée un tableau avec les nombres tout prêt, donc il faudra quand même faire une boucle pour créer le tableau avant non ?
Enfin j'ai réussi à exécuter mon code 3 fois, même si ta boucle pour les % s'éxecute 11 fois. J'ai rajouté une boucle à l'intérieur 8O
edit, j'ai rien dit, tout marche bien, il suffit de mettre le code qu'on veut exécuter X fois dans le else où il y a le i++. Et ça fonctionne nickel ! Merci infiniment !!!!!
edit: je viens de voir qu'il existait une jProgressBar, ça serait compliquer si je voulais changer le code que tu m'a donné pour afficher les % sous forme de barre dans une petit boite de dialogue qui s'ouvre au lancement de la boucle ?
J'hésite parce que là ça fonctionne bien en affichage texte donc je me demande si ça vaut le coup de tout rechanger pour l'afficher sous forme graphique avec une barre, bon c'est vrai que ça ferait beau mais bon...
A mince, j'aurais du te poser plus de question sur ton problème, je t'aurais alors directement indiqué la JProgressBar...
Bâ, tu peux utiliser un JProgressBar, ça fera plus joli et ça t'entrainera ;)
Comme ça tu sauras comment l'utiliser.
ps : pense à :resolu:
J'ai lu quelques exemples de JprogressBar, mais ce sont souvent des exemples compliqués, du genre on traite un grand nombre de fichier, on affiche le temps restant et le fichier en cours de traitement. Mais moi c'est beaucoup plus simple...enfin je vais essayer mais si j'y arrive pas rapidement tant pis, j'ai encore plein d'autres trucs à faire :mrgreen:
Merci encore pour ton aide :ccool:
Bon j'ai essayé cette progressBar, mais je trouve vraiment aucun tuto simple, je ne veux pas regarder des fichiers dans un répertoire ni rien. Je veux juste afficher une barre, avec comme départ 0.
Ensuite, je laisse le code qu'Ivelios m'a donné, et à chaque fois au lieu de faire un println, je fais un setValue+10 de la progressBar .
C'est tout, non ?
Mais je n'y arrive pas, j'ai mis ça dans la déclaration :
JProgressBar progressBar;
progressBar = new JProgressBar();
progressBar.setMaximum(100);
progressBar.setMinimum(0);
progressBar.setStringPainted(true);
progressBar.setVisible(true);
progressBar.paint(progressBar.getGraphics());
et à chaque fois que je fais un println, je fais progressBar.setValue((int)a);