Décodage morse-français

Résolu
Et-laine -  
KX Messages postés 19031 Statut Modérateur -
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 19031 Statut Modérateur 3 020
 
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