Conversion String --> char

el_kun_aguero Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

4 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   399
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   399
 
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   Statut Membre Dernière intervention  
 
Ah d'accord je vois, je vais essayer ça. Merci pour l'aide.
0
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
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 16 Date d'inscription   Statut Membre Dernière intervention  
 
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