Bonjour je suis en train d apprendre du java cependant j ai un petit soucis
voici mon code
package project1;
import java.util.*;
public class sdz {
/**
* @param args
*/
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//premier texte
System.out.println("convertissuer de degrés Celsius en degrés Fahrenheit");
System.out.println("----------------------------------------------------");
char nouv = ' ';
do {
System.out.println("Choisissez le mode de conversion");
System.out.println("\n1- Convertisseur Celsius - Fahrenheit");
System.out.println("\n2- Convertisseur Fahrenheit - Celsius");
int converssion = sc.nextInt();
int c = converssion;
if(c == 1)
{
System.out.println("Temperature à convertir : ");
double temperature = sc.nextDouble();
double resultat = temperature * 9 / 5 + 32;
System.out.println(temperature+ " °C correspond à : " +resultat+ " °F");
}
if(c == 2)
{
System.out.println("Temperature à convertir : ");
double temperature1 = sc.nextDouble();
double resultat1 = (temperature1 - 32) * 5/9;
System.out.println(temperature1+ " °F correspond à : " +resultat1+ " °C");
}
System.out.println("\nSouhaitez vous convertir une autre température ? (O/N)");
String nouv = sc.nextLine();
}while (nouv =='O');
}
}
le prob c est que sur cette ligne
String nouv = sc.nextLine();
le "nouv" indique une erreur
je n arrive pas a resoudre se prob il me damande de la renommer "nouv1"
Mais moi je veux qu il me demande d ecrire O ou N.
Quelqu un a la solution ??
Merci
Cordialement
Salut,
En fait, plus tôt dans ton code, tu déclare deja la variable nouv ( en lui donnant le type char ).
Du coup, le compilateur n'accepte pas cette nouvelle déclaration.
Si tu veux garder le même nom, il va falloir supprimer la seconde déclaration en se contentant de conserver le type char...
Merci j ai supp la variable qui etait plus haut
voici le code
package project1;
import java.util.*;
public class sdz {
/**
* @param args
*/
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//premier texte
System.out.println("convertissuer de degrés Celsius en degrés Fahrenheit");
System.out.println("----------------------------------------------------");
do {
System.out.println("Choisissez le mode de conversion");
System.out.println("\n1- Convertisseur Celsius - Fahrenheit");
System.out.println("\n2- Convertisseur Fahrenheit - Celsius");
int converssion = sc.nextInt();
int c = converssion;
if(c == 1)
{
System.out.println("Temperature à convertir : ");
double temperature = sc.nextDouble();
double resultat = temperature * 9 / 5 + 32;
System.out.println(temperature+ " °C correspond à : " +resultat+ " °F");
}
if(c == 2)
{
System.out.println("Temperature à convertir : ");
double temperature1 = sc.nextDouble();
double resultat1 = (temperature1 - 32) * 5/9;
System.out.println(temperature1+ " °F correspond à : " +resultat1+ " °C");
}
System.out.println("\nSouhaitez vous convertir une autre température ? (O/N)");
String nouv = sc.nextLine();
}while (nouv == 'O');
}
}
le prob c est que comme c est apres la boucle while est bas la variable cree n est pas dans la meme "boucle"
Comment faire ?
Du coup il indique un message d erreur sur le nouv qui est apres le while
Heu... Si j'ai bien compris ton truc, c'est un problème de portée des variables.
Ta variable nouv est local à un bloc plus interne que celui dont tu veux l'utiliser.
La solution : Déclarer nouv plus tôt dans ton code ( en gros, au niveau de l'ouverture de ton bloc le plus externe comprenant ta boucle while ).
oui mais du coup ca va la declarer deux fois ?
parce que apres je pose la question a l utilisateur
Code illisible, mets dans une balise <code> ou sur pastebin
Mais non, la deuxième déclaration tu l'as supprime ! ![]()
Une variable ne disparait que si tu fermes le bloc le plus interne dans lequel elle a été déclaré, en ouvrant un nouveau bloc à l'intérieur d'un bloc où elle a été déclarée, elle pourra fonctionner sans problème.
Tiens un exemple pour mieux comprendre :
{
{
char var_1 ;
{
var_1 = "Oui ! var_1 existe ! ";
}
}
var_1 = " Ah merde, var_1 n'existe pas, ceci va déclencher une erreur :/ " ;
}
Tu arrives à saisir ?
( désolé pour la présentation dégueulasse, je suis via mobile )
Ah oui présentation encore plus dégueulasse que je l'imaginais ; JVC supprime automatiquement les espaces classiques en début de lignes, excuse moi. ![]()
Oui j ai saisi
le prob c est que si je suprr la deuxieme qui est donc celle ci "nouv = sc.nextLine().charAt(0);" et bien le programme ne me demande plus d entrer quelque chose
Ah non mais t'as confondu déclaration et affectation : tu n'avais pas besoin de supprimer cette ligne, ça allait très bien.
Pour rappel :
char nouv // ça, c'est une déclaration
nouv = " Hello " // ça, c'est une affectation
char nouv = " Hello " // ça, c'est une déclaration avec initialisation ( = déclaration avec affectation )
Ahhhh ok merci j avais pas saisie alors
package project1;
import java.util.*;
public class sdz {
/**
* @param args
*/
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//Programme introduction
System.out.println("convertissuer de degrés Celsius en degrés Fahrenheit");
System.out.println("----------------------------------------------------");
char nouv;
do {
System.out.println("Choisissez le mode de conversion");
System.out.println("\n1- Convertisseur Celsius - Fahrenheit");
System.out.println("\n2- Convertisseur Fahrenheit - Celsius");
int converssion = sc.nextInt();
//Condition 1
int c = converssion;
if(c == 1)
{
System.out.println("Temperature à convertir : ");
double temperature = sc.nextDouble();
double resultat = temperature * 9 / 5 + 32;
System.out.println(temperature+ " °C correspond à : " +resultat+ " °F");
}
//Condition 2
if(c == 2)
{
System.out.println("Temperature à convertir : ");
double temperature1 = sc.nextDouble();
double resultat1 = (temperature1 - 32) * 5/9;
System.out.println(temperature1+ " °F correspond à : " +resultat1+ " °C");
}
System.out.println("\nSouhaitez vous convertir une autre température ? (O/N)");
nouv = sc.nextLine().charAt(0);
}while(nouv == 'O');
}
}
Par contre peut tu me dire qu est ce que je dois modifier ou suppr ?
Parce que y a aucun message d erreur sur la page
Mais quand je lance le rpogramme
ca affiche la derniere phrase et ce affiche 3 ligne en rouge (une erreur)
Comme le dit tintinmage : Merci d'utiliser la balise <code> (et je complète : ou de passer par un service tiers de mise en forme de code).
package project1;
import java.util.*;
public class sdz {
/**
* @param args
*/
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//Programme introduction
System.out.println("convertissuer de degrés Celsius en degrés Fahrenheit");
System.out.println("----------------------------------------------------");
char nouv;
do {
System.out.println("Choisissez le mode de conversion");
System.out.println("\n1- Convertisseur Celsius - Fahrenheit");
System.out.println("\n2- Convertisseur Fahrenheit - Celsius");
int converssion = sc.nextInt();
//Condition 1
int c = converssion;
if(c == 1)
{
System.out.println("Temperature à convertir : ");
double temperature = sc.nextDouble();
double resultat = temperature * 9 / 5 + 32;
System.out.println(temperature+ " °C correspond à : " +resultat+ " °F");
}
//Condition 2
if(c == 2)
{
System.out.println("Temperature à convertir : ");
double temperature1 = sc.nextDouble();
double resultat1 = (temperature1 - 32) * 5/9;
System.out.println(temperature1+ " °F correspond à : " +resultat1+ " °C");
}
System.out.println("\nSouhaitez vous convertir une autre température ? (O/N)");
nouv = sc.nextLine().charAt(0);
}while(nouv == 'O');
}
}
Pour la question voir celui d au dessus
c est c est 3 ligne rouge qui apparaisse
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at project1.sdz.main(sdz.java:55)
nouv = sc.next().charAt(0);
Merci ca marche