Conversion String --> char [Fermé]

Signaler
Messages postés
17
Date d'inscription
dimanche 17 novembre 2013
Statut
Membre
Dernière intervention
14 décembre 2013
-
 el_kun_aguero -
Bonjour à tous,

On me demande de coder un programme qui permet d'afficher la question suivante : « quel est ton prénom ? », de saisir un prénom, puis d'afficher ce prénom selon une diagonal.
Par ex si je saisi "Igal" comme prénom, il doit afficher:
I
______ ______ g
______ ______ ______ a
______ ______ ______ ______ l


Sans les " ______ "

J'ai fais ça pour le moment:

public class Test {
public static void main (String[] args) {

String nom;
int i=0;
char carac;

Ecran.afficherln("Veuillez saisir votre prénom svp: : ");
nom = Clavier.saisirString();

for ( i =0; i <= nom.length(); i++) {

carac = nom.charAt(i);
Ecran.afficherln (" ",carac);

}

}
}


Mais le programme m'affiche:

I
g
a
l

Si quelqu'un pourrais m'aider, merci d'avance.

4 réponses

Messages postés
16327
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 mai 2021
2 826
Le problème c'est que jamais tu ne lui demande d'écrire des espaces avant tes lettres... or il faut que tu en ai de plus en plus à chaque ligne.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
389
Comme l'a mentionné KX, il faudrait que tu incrémentes le nombre d'espaces devant ton caractère à chaque fois que ta boucle augmente.

Je ferais un truc du genre:

string espace = "";

for ( i =0; i < nom.length(); i++) { 

carac = nom.charAt(i);
Ecran.afficherln (espace, carac); 
espace += " "; 

}


Ou quelque chose du genre devrait fonctionner.
Bonne chance!


Echo "Lima Mike Alfa";
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
16327
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 mai 2021
2 826
Attention : la boucle for doit s'arrêter AVANT nom.length() parce que sinon nom.charAt(i) va provoquer une exception.
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
389
En effet, je n'avais pas remarqué en copiant le code. Je corrige ça tout de suite... bien observé!
>
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016

Ah d'accord je vois, je vais essayer ça. Merci pour l'aide.
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
389
Quel est le problème exactement? Est-ce l'affichage d'une première ligne vide?

Peut-on voir le code des fonctions
Clavier.saisirString(); 
et de
Ecran.afficherln ();
?

Merci!


Echo "Lima Mike Alfa";
Messages postés
17
Date d'inscription
dimanche 17 novembre 2013
Statut
Membre
Dernière intervention
14 décembre 2013

En fait, il n'affiche pas le nom en diagonale. Il affiche les char tous dans la même colonne.
Et pour les codes, tu parle des codes sources (désolé si je dis des bétises, je débute en programmation, c'est ma première année).
Si c'est c'est les codes sources voici celui de Ecran.afficherln();
" <pre><div class="text_to_html">public class Ecran {


public static void main(String[] s) {
int n;
n=Clavier.saisirInt();
afficherln("salut", n, 'c');
afficherln("toto");
afficherln();
afficherln(24);
}


public static void afficher(Object... s) {
for (Object o : s) {
System.out.print(o.toString());
}
}


public static void afficherln(Object... s) {
for (Object o : s) {
System.out.print(o.toString());
}
System.out.println();
}


public static void sautDeLigne() {
System.out.println();
}


}</div></pre>"


Et voici celui de Clavier.saisirString();
"<pre><div class="text_to_html">import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Clavier{
private static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));
private Clavier(){}

public static byte saisirByte(){
byte b = 0;
boolean ko = true;
while (ko) {
try{
b = Byte.valueOf(flux.readLine()).byteValue();
ko = false;
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas un byte. Recommencez.");
}
}
return b;
}

public static short saisirShort(){
short s = 0;
boolean ko = true;
while (ko) {
try{
s = Short.valueOf(flux.readLine()).shortValue();
ko = false;
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas un short. Recommencez.");
}
}
return s;
}

public static int saisirInt(){
int i = 0;
boolean ko = true;
while (ko) {
try{
i = Integer.valueOf(flux.readLine()).intValue();
ko = false;
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas un int. Recommencez.");
}
}
return i;
}

public static long saisirLong(){
long l = 0;
boolean ko = true;
while (ko) {
try{
l = Long.valueOf(flux.readLine()).longValue();
ko = false;
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas un long. Recommencez.");
}
}
return l;
}

public static double saisirDouble(){
double d = 0;
boolean ko = true;
while (ko) {
try{
d = Double.valueOf(flux.readLine()).doubleValue();
ko = false;
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas un double. Recommencez.");
}
}
return d;
}

public static float saisirFloat(){
float f = 0;
boolean ko = true;
while (ko) {
try{
f = Float.valueOf(flux.readLine()).floatValue();
ko = false;
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas un float. Recommencez.");
}
}
return f;
}

public static char saisirChar(){
char c = ' ';
boolean ko = true;
while (ko) {
try{
String line = flux.readLine();
if (line.length() > 0) {
c = line.charAt(line.length()-1);
ko = false;
}
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas un char. Recommencez.");
}
}
return c;
}

public static String saisirString(){
String s = "";
boolean ko = true;
while (ko) {
try{
s = flux.readLine();
ko = false;
} catch(Exception e){
System.err.println("Erreur : la valeur saisie n'est pas une chaine. Recommencez.");
}
}
return s;
}


}
</div></pre>"