Conversion String --> char

Fermé
el_kun_aguero Messages postés 17 Date d'inscription dimanche 17 novembre 2013 Statut Membre Dernière intervention 14 décembre 2013 - Modifié par el_kun_aguero le 18/11/2013 à 16:41
 el_kun_aguero - 18 nov. 2013 à 20:20
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

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
18 nov. 2013 à 18:15
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
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 396
Modifié par Doctor C le 18/11/2013 à 20:08
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
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
18 nov. 2013 à 20:05
Attention : la boucle for doit s'arrêter AVANT nom.length() parce que sinon nom.charAt(i) va provoquer une exception.
0
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 396
18 nov. 2013 à 20:08
En effet, je n'avais pas remarqué en copiant le code. Je corrige ça tout de suite... bien observé!
0
el_kun_aguero > Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016
18 nov. 2013 à 20:20
Ah d'accord je vois, je vais essayer ça. Merci pour l'aide.
0
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 396
Modifié par Doctor C le 18/11/2013 à 16:40
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";
0
el_kun_aguero Messages postés 17 Date d'inscription dimanche 17 novembre 2013 Statut Membre Dernière intervention 14 décembre 2013
18 nov. 2013 à 17:00
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>"
0