Décodage morse-français

Résolu
Et-laine -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   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