[java] dessiner une croix
Résolu
oliver3923
Messages postés
971
Date d'inscription
Statut
Membre
Dernière intervention
-
oliver3923 Messages postés 971 Date d'inscription Statut Membre Dernière intervention -
oliver3923 Messages postés 971 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un petit problème avec un programme en java
l'utilisateur doit entrer un chiffre puis on doit se servir de ce chiffre pour afficher une croix grace a des étoiles :
par exemple :
***
*****
*****
*****
***
le problème que j'ai est exactement le même que sur l'exemple que j'ai mis : les espaces sont plus petits que les étoiles (ou un autre caractère)
du coup la ligne du dessus et celle du dessous ne sont jamais centrés sur ma croix
y a t'il un moyen de régler ce problème? (par exemple en mettant un caractère et une fonction pour le rendre "invisible")
merci d'avance
j'ai un petit problème avec un programme en java
l'utilisateur doit entrer un chiffre puis on doit se servir de ce chiffre pour afficher une croix grace a des étoiles :
par exemple :
***
*****
*****
*****
***
le problème que j'ai est exactement le même que sur l'exemple que j'ai mis : les espaces sont plus petits que les étoiles (ou un autre caractère)
du coup la ligne du dessus et celle du dessous ne sont jamais centrés sur ma croix
y a t'il un moyen de régler ce problème? (par exemple en mettant un caractère et une fonction pour le rendre "invisible")
merci d'avance
A voir également:
- [java] dessiner une croix
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Dessiner un tableau - Guide
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
6 réponses
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)
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
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
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
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
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
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); } }
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^^