Décodage morse-français

Résolu/Fermé
Et-laine - 8 déc. 2012 à 16:42
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 8 déc. 2012 à 17:41
Bonjour,

Je suis en train de réaliser un programme pour décoder une phrase en morse, vers le français, le problème, c'est que mon programme fonctionne, sauf qu'il ne prend pas en compte le dernier caractère, si celui-ci n'est pas suivi par un espace ... et j'ai beau chercher de tous les côtés, ça ne fonctionne pas... Si vous voyez le problème...
Merci d'avance!

public static void morse2fr (String phrase){
		
	String phraseInterm = "";
	String phraseTransforme = "";
	
	for (int i = 0; i<phrase.length(); i++){
		
		if((phrase.charAt(i)!= ' ')&&(i != phrase.length()-1 )){
			phraseInterm += phrase.charAt(i);}
		
		else {
			
			switch (phraseInterm) {
			case ".-" : phraseTransforme += "A" ; break ;
			case "-..." : phraseTransforme += "B"; break ;
			case "-.-." : phraseTransforme += "C" ; break ;
			case "-.." : phraseTransforme += "D"; break ;
			case "." : phraseTransforme +=  "E"; break ;
			case "..-." : phraseTransforme += "F" ; break ;
			case "--." : phraseTransforme += "G" ; break ;
			case "...." : phraseTransforme += "H" ; break ;
			case ".." : phraseTransforme += "I"; break ;
			case ".---" : phraseTransforme += "J"; break ;
			case "-.-" : phraseTransforme += "K"; break ;
			case ".-.." : phraseTransforme += "L" ; break ;
			case "--" : phraseTransforme += "M"; break ;
			case "-." : phraseTransforme += "N"; break ;
			case "---" : phraseTransforme += "O" ; break ;
			case ".--." : phraseTransforme += "P"; break ;
			case "--.-" : phraseTransforme += "Q"; break ;
			case ".-." : phraseTransforme += "R"; break ;
			case "..." : phraseTransforme +="S"; break ;
			case "-" : phraseTransforme += "T" ; break ;
			case "..-" : phraseTransforme += "U" ; break ;
			case "...-" : phraseTransforme += "V"; break ;
			case ".--" : phraseTransforme += "W"; break ;
			case "-..-" : phraseTransforme +="X"; break ;
			case "-.--" : phraseTransforme += "Y"; break ;
			case "--.." : phraseTransforme += "Z"; break ;
			case ".----" : phraseTransforme += "1" ; break ;
			case "..---" : phraseTransforme += "2"; break ;
			case "...--" : phraseTransforme += "3"; break ;
			case "....-" : phraseTransforme += "4"; break ;
			case "....." : phraseTransforme += "5"; break ;
			case "-...." : phraseTransforme += "6"; break ;
			case "--..." : phraseTransforme += "7"; break ;
			case "---.." : phraseTransforme += "8"; break ;
			case "----." : phraseTransforme += "9"; break ;
			case "-----" : phraseTransforme += "0"; break ;
			case "/" : phraseTransforme += " " ; break;
			
				}
			
			phraseInterm = "";
			
			}
		}
	System.out.println(phraseTransforme);
	}




A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 déc. 2012 à 17:41
Solution simple : tu rajoutes un espace final à phrase avant de commencer le traitement.
phrase+=" ";
Ou alors, tu modifies les conditions pour ajouter le dernier caractère ET faire le switch :

for (int i = 0; i<phrase.length(); i++)
{
	if (phrase.charAt(i)!=' ' || i==phrase.length()-1)
	{
		phraseInterm += phrase.charAt(i);
		
		if (i!=phrase.length()-1)
			continue; // on ne fait pas le switch
	}
	
	switch (phraseInterm)
	{
		...
-1