Code Java non fonctionnel

Fermé
almolelemay Messages postés 20 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 9 août 2011 - 9 août 2011 à 17:06
 Utilisateur anonyme - 10 août 2011 à 07:32
Bonjour,

Voici mon code :

import java.util.*; //Importation de la classe java.util.*, utilisé pour la fonction Scanner
public class ligne {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); //Ici je configure un nouveau Scanner pour lire les entrés de clavier
		String reb = " ";
		// TODO Auto-generated method stub
		System.out.println("------------------------------------------------------------------------"); //Affichage du haut du tableau
		System.out.println("|            CONVERSION DEGRES CELCIUS ET DEGRES FAHRENHEIT            |");
		System.out.println("------------------------------------------------------------------------");
		do{	//Boucle principale qui s'exécute jusqu'à ce que la variable reb = n ou N
			int aPartirDe, jusqua, pas; //Déclaration des variables
			do{
				System.out.println("À partir de :");
				aPartirDe = sc.nextInt(); //Entré du clavier qui attribue une valeur à la variable "aPartirDe"
				System.out.println("Jusqu'à :");
				jusqua = sc.nextInt(); //Entré du clavier qui attribue une valeur à la variable "jusqua"
				System.out.println("Par pas de :");
				pas = sc.nextInt(); //Entré du clavier qui attribue une valeur à la variable "pas"
				if (jusqua<aPartirDe && pas>=0){ //Si la valeur de départ est plus petite que la valeur de fin et que le pas est positif ou nul
					System.out.println("Traitement impossible");
				}
				else if (jusqua>aPartirDe && pas<=0){
					System.out.println("Traitement impossible");
					do{
						System.out.println("À partir de :");
						aPartirDe = sc.nextInt();
						System.out.println("Jusqu'à :");
						jusqua = sc.nextInt();
						System.out.println("Par pas de :");
						pas = sc.nextInt();
						if (jusqua<aPartirDe && pas>=0){
							System.out.println("Traitement impossible");
						}
						else if (jusqua>aPartirDe && pas<=0){
							System.out.println("Traitement impossible");
						}
					}while(jusqua>aPartirDe && pas<=0);
				}
			}while(jusqua<aPartirDe && pas>=0); //Fin de la boucle
			System.out.println("Assurez-vous que l'imprimante est prête");
			String ask = " ";
			System.out.println("Si vous êtes prêt, tapez O, Sinon tapez N");
			sc.nextLine();
			ask = sc.nextLine();
			do{
				System.out.println("TABLE DE CONVERSION  CELSIUS / FAHRENHEIT");
				System.out.println("--------------------------------------------");
				System.out.println("       Celsius      |       Fahrenheit      ");
				System.out.println("--------------------------------------------");
				do{
					int resultat = ((9/5)*aPartirDe)+32; //formule de conversion degrés celsius en fahrenheit
					System.out.println("        "+aPartirDe+"        |         "+resultat); //affichage des lignes du tableau
					aPartirDe += pas; //ajout de la valeur de la variable "pas" à la variable "aPartirDe"
				}while(aPartirDe>=jusqua || aPartirDe<=jusqua || aPartirDe==jusqua);
			}while(ask=="o" || ask=="O");
			System.out.println("Souhaitez-vous éditer une autre table ?(O/N)");
			while(reb!="o" || reb!="O" || reb!="n" || reb!="N"){
				reb = sc.nextLine(); //L'utilisateur rentre la valeur de reb pour savoir si on recommence le programme ou pas
			}
		}while (reb=="O" || reb =="o" || reb==" ");
	}

}



Il ne marche pas car il m'affiche des nombre incoérent à partir de la boucle de la table de conversion. Pouvez-vous m'aider?
A voir également:

3 réponses

Salut, fais attention avec les String en Java, elle ne fonctionnent pas comme tu le crois :

String s = " ";
(s == " ") va renvoyer vrai,

mais c'est seulement une illusion.

s = sc.NextLine; // imaginons je tape "O"

(s == "O") va renvoyer faux, il me semble.

il faut utiliser if ( s.equals("O") )

http://leepoint.net/notes-java/data/strings/12stringcomparison.html
1
almolelemay Messages postés 20 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 9 août 2011
9 août 2011 à 17:22
Ok merci!!
0
Utilisateur anonyme
10 août 2011 à 07:32
Salut,

En plus il faut que tu calcules en nombres réels (type double ou float), pas en entiers (int) et tu te rendras compte qu'il faudra arrondir le résultat, ou au moins ne conserver que 2 décimales.

Cordialement,

Dan
0