[java] dessiner une croix
Résolu/Fermé
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
-
5 nov. 2010 à 21:33
oliver3923 Messages postés 971 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 15 novembre 2014 - 6 nov. 2010 à 17:26
oliver3923 Messages postés 971 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 15 novembre 2014 - 6 nov. 2010 à 17:26
A voir également:
- [java] dessiner une croix
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Dessiner un tableau - Guide
- Croix snapchat - Forum Snapchat
6 réponses
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
143
5 nov. 2010 à 22:51
5 nov. 2010 à 22:51
import java.util.Scanner; public class Croixbis { public static void main (String[] args){ int N, n, pair, espace = 0; Scanner sc = new Scanner (System.in); System.out.print ("entrez la valeur de N : "); N = sc.nextInt(); pair = N % 2; if (pair == 0) { n = N *2; } else { n = (N*2) - 1; } espace = (n/2) - (N/2); for (int j =0; j < espace; j++) { for (int a = 0; a<espace; a++) { System.out.print ("a"); } for (int i = 0; i< N; i++) { System.out.print("*"); } System.out.print ("\n"); } for (int j = 0; j <N; j++) { for (int i = 0; i<n; i++) { System.out.print ("*"); } System.out.print ("\n"); } for (int j =0; j < espace; j++) { for (int a = 0; a< espace; a++) { System.out.print ("a"); } for (int i = 0; i< N; i++) { System.out.print("*"); } System.out.print ("\n"); } } }
voila le code
et justement c'est l'alignement qui me pose problème
for (int j =0; j < espace; j++) { for (int a = 0; a< espace; a++) { System.out.print ("a"); } for (int i = 0; i< N; i++) { System.out.print("*"); } System.out.print ("\n"); }
cette boucle me sert a afficher des espaces pour aligner mes étoiles au milieu de ma croix
j'ai mis des 'a' au lieu des espaces et ca marche
par contre dès que je remet les espaces ma croix n'est plus "normale"
et si je compte les espaces (en me déplacant d'un espace a la fois avec les flèches) j'ai exactement le nombre d'espaces qu'il me faut
donc apparemment les espaces sont plus "petits" que les caractères d'où mon problèmes
(je n'ai pas d'exemples de croix a te montrer mais suffit de tester le programme directement avec les 'a' ca te montrera comment doit être la croix)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 5/11/2010 à 22:34
Modifié par KX le 5/11/2010 à 22:34
Je n'ai pas bien compris ton problème, dans une console tous les caractères sont alignés, donc il n'y a pas à afficher de caractères invisibles, des espaces et c'est bon...
Montre nous ce que tu as fait, pour mieux comprendre de quoi on parle, et donne nous un exemple d'une "croix" bien faite (utilise les balises de codes pour bien les aligner)
La confiance n'exclut pas le contrôle
Montre nous ce que tu as fait, pour mieux comprendre de quoi on parle, et donne nous un exemple d'une "croix" bien faite (utilise les balises de codes pour bien les aligner)
La confiance n'exclut pas le contrôle
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 5/11/2010 à 23:19
Modifié par KX le 5/11/2010 à 23:19
Ce n'est pas du tout le genre de croix que j'imaginais, je pensais plus à un "x" qu'à un "+", cependant, je n'ai pas de problème d'alignement quand je remplace "a" par " "
J'obtiens le résultat escompté, à savoir, pour n=5 :
Je reconnais que ce n'est pas très esthétique, car les caractères sont plus hauts que larges, mais ton algorithme est bon !
Qu'est-ce que tu utilises pour exécuter ton code ? Moi j'ai testé ça avec la "console" d'Eclipse et comme je te dis, ça marche correctement...
La confiance n'exclut pas le contrôle
J'obtiens le résultat escompté, à savoir, pour n=5 :
***** ***** ********* ********* ********* ********* ********* ***** *****
Je reconnais que ce n'est pas très esthétique, car les caractères sont plus hauts que larges, mais ton algorithme est bon !
Qu'est-ce que tu utilises pour exécuter ton code ? Moi j'ai testé ça avec la "console" d'Eclipse et comme je te dis, ça marche correctement...
La confiance n'exclut pas le contrôle
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
143
5 nov. 2010 à 23:09
5 nov. 2010 à 23:09
Pour le moment j'utilise Scite pcq ils veulent qu'on utilise celui la a la fac (mais il est vraiment nul^^)
j'ai aussi eclipse mais pour le moment je peux rien compiler dessus faut que je trouve ce qui se passe
si mon algorithme est bon c'est déja ca^^
merci pour tes réponses
j'ai aussi eclipse mais pour le moment je peux rien compiler dessus faut que je trouve ce qui se passe
si mon algorithme est bon c'est déja ca^^
merci pour tes réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
5 nov. 2010 à 23:15
5 nov. 2010 à 23:15
Si c'est l'affichage de Scite qui t'induis en erreur, exécute tout simplement en ligne de commande, ça devrait résoudre tes problèmes d'affichage :
java Croixbis
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
143
5 nov. 2010 à 23:21
5 nov. 2010 à 23:21
la console me met une erreur quand je lance en ligne de commande :
C:\Users\olivier>java Croixbis
Exception in thread "main" java.lang.NoClassDefFoundError: Croixbis
Caused by: java.lang.ClassNotFoundException: Croixbis
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Croixbis. Program will exit.
C:\Users\olivier>java Croixbis
Exception in thread "main" java.lang.NoClassDefFoundError: Croixbis
Caused by: java.lang.ClassNotFoundException: Croixbis
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Croixbis. Program will exit.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
5 nov. 2010 à 23:30
5 nov. 2010 à 23:30
Il faut que tu te places dans le dossier où tu as compilé ta classe, sinon forcément ça ne marche pas...
cd "C:\...\MonDossier" // là où est 'Croixbis.class' java Croixbis
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
143
6 nov. 2010 à 08:55
6 nov. 2010 à 08:55
c'est bon ca marche
merci beaucoup
merci beaucoup
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 nov. 2010 à 12:17
6 nov. 2010 à 12:17
Je viens de regarder ton code et j'ai relevé deux points qui peuvent être améliorés.
1) L'imbrication des boucles, utiliser des fonctions serait plus clair.
2) Le calcul de espace qui peut-être fait plus simplement.
Exemple :
1) L'imbrication des boucles, utiliser des fonctions serait plus clair.
2) Le calcul de espace qui peut-être fait plus simplement.
Exemple :
import java.util.Scanner; public class CroixTer { final static char ESPACE=' '; final static char ETOILE='*'; private static void dessinerLigne(int nbEspaces, int nbEtoiles) { for (int i=0; i<nbEspaces; i++) System.out.print(ESPACE); for (int i=0; i<nbEtoiles; i++) System.out.print(ETOILE); for (int i=0; i<nbEspaces; i++) System.out.print(ESPACE); System.out.println(); } public static void dessinerCroix(int n) { int m = n/2; for (int j=0; j<m; j++) dessinerLigne(m,n); for (int j=0; j<n; j++) dessinerLigne(0,2*m+n); for (int j=0; j<m; j++) dessinerLigne(m,n); System.out.println(); } public static void main(String[] args) { System.out.print("Entrez la valeur de n : "); int n=new Scanner(System.in).nextInt(); dessinerCroix(n); } }
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
143
Modifié par oliver3923 le 6/11/2010 à 17:28
Modifié par oliver3923 le 6/11/2010 à 17:28
salut
d'abord encore merci pour ton aide et tes conseils
pour les fonctions d'habitude c'est ce que je fais (en C) mais je n'ai pas encore appris a le faire en java a la fac (on n'avance vraiment pas vite^^) et j'ai pas encore eu le temps de regarder sur le sdz
pour les espaces j'avais calculé comme toi au début mais vu que ca ne marchait pas (enfin je croyais^^) j'ai essayé autrement^^
d'abord encore merci pour ton aide et tes conseils
pour les fonctions d'habitude c'est ce que je fais (en C) mais je n'ai pas encore appris a le faire en java a la fac (on n'avance vraiment pas vite^^) et j'ai pas encore eu le temps de regarder sur le sdz
pour les espaces j'avais calculé comme toi au début mais vu que ca ne marchait pas (enfin je croyais^^) j'ai essayé autrement^^