为我的编程课创建一个摩尔斯电码翻译器,输出出现问题 [英] Creating a Morse Code translator for my programming class,having troubles with the output

查看:149
本文介绍了为我的编程课创建一个摩尔斯电码翻译器,输出出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我在该平台上的第一篇文章,对Java编程来说还很新,而且英语也不太好:p

我的老师要求一个莫尔斯电码翻译器,它能对字母进行莫尔斯电击,反之亦然.

这是我想出的代码:

import java.util.Scanner;
public class Morse2 {
    public static void main(String[] args){
 String[] letras = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
                  "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", 
                  "y", "z"};                  
 String[] MORSE = {
 ".-" ,"-...","-.-.","-.." ,"." , 
 "..-.","--." ,"....",".." ,".---", 
 "-.-" ,".-..","--" ,"-." ,"---" , 
 ".--.","--.-",".-." ,"..." ,"-" , 
 "..-" ,"...-",".--", "-..-","-.--", 
 "--.."}; 
System.out.println("Insira uma frase em codigo morse para uma traducao para texto ou vice-versa");
Scanner in=new Scanner(System.in);
String frase =in.nextLine();
String resp="";

frase=frase.toLowerCase();
String[] paraletras=frase.split("");
String[]paraMorse=frase.split(" ");
for(int i=0;i< paraletras.length;i++){
    for(int j=0;j< letras.length ;j++){
     if (paraletras[i].equals(letras[j])){
    resp=resp+ MORSE[j]+" ";}
    }
}
for(int k=0;k<paraMorse.length;k++){
     for (int l=0;l<MORSE.length;l++){
          if(paraMorse[k].equals(MORSE[l])){
    resp=resp+letras[l]+ " ";}}
    }

System.out.print(resp);}

    }

该类编译良好,但是我的输出出现了一些问题,更具体地说是输出的顺序:

例如我的输入"a b -.- c" 我想要的是".- -... k -.-". 我得到的是".- -... -.-.k" 我相信这是因为我使用2代替了1周期,但我真的无法告诉该怎么做. 同样,当用户写一个不可能的字符(如"*")时,我认为该字符可能会加上?"在那个位置上,即时通讯也在苦苦挣扎,我不知道是否应该使用if循环或其他方式

请帮助我,谢谢大家^^

解决方案

很抱歉成为这样的菜鸟,但可能也是因为ive从8个小时前就已经在这里了,但是为什么这段代码只给我这封信的莫尔斯电码"a"几次?

import java.util.Scanner;
public class Morse2 {
    public static void main(String[] args){
 String[] abecedario = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
                  "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", 
                  "y", "z"};                  
 String[] MORSE = {
 ".-" ,"-...","-.-.","-.." ,"." , 
 "..-.","--." ,"....",".." ,".---", 
 "-.-" ,".-..","--" ,"-." ,"---" , 
 ".--.","--.-",".-." ,"..." ,"-" , 
 "..-" ,"...-",".--", "-..-","-.--", 
 "--.."}; 
System.out.println("Insira uma frase em codigo morse para uma traducao para texto ou vice-versa");
Scanner in=new Scanner(System.in);
String frase =in.nextLine();
String resp="";
frase=frase.toLowerCase();
String[] palavra=frase.split(" ");
for(int i=0;i< palavra.length;i++){
    String letra=palavra[i];
    String novochar="";

    for (int j=0;j<abecedario.length;j++){
        if (abecedario[j].equals(letra));
        novochar=MORSE[j];
        break;

    }
    if(novochar==""){
        for (int j=0;j<MORSE.length;j++){
        if (MORSE[j].equals(letra));
        novochar=abecedario[j];
        break; 
    }
    }

    if(novochar==""){
        novochar="?";
        continue;

    }   
    resp=resp+novochar+" ";
    }
    System.out.println(resp);
    }
}   

this is my first post on this platform ,im kinda new to this java programing and also not that good at english :p

My teacher asked for a morse code translator that does morse to letters and vice versa

Here's the code i came up with:

import java.util.Scanner;
public class Morse2 {
    public static void main(String[] args){
 String[] letras = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
                  "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", 
                  "y", "z"};                  
 String[] MORSE = {
 ".-" ,"-...","-.-.","-.." ,"." , 
 "..-.","--." ,"....",".." ,".---", 
 "-.-" ,".-..","--" ,"-." ,"---" , 
 ".--.","--.-",".-." ,"..." ,"-" , 
 "..-" ,"...-",".--", "-..-","-.--", 
 "--.."}; 
System.out.println("Insira uma frase em codigo morse para uma traducao para texto ou vice-versa");
Scanner in=new Scanner(System.in);
String frase =in.nextLine();
String resp="";

frase=frase.toLowerCase();
String[] paraletras=frase.split("");
String[]paraMorse=frase.split(" ");
for(int i=0;i< paraletras.length;i++){
    for(int j=0;j< letras.length ;j++){
     if (paraletras[i].equals(letras[j])){
    resp=resp+ MORSE[j]+" ";}
    }
}
for(int k=0;k<paraMorse.length;k++){
     for (int l=0;l<MORSE.length;l++){
          if(paraMorse[k].equals(MORSE[l])){
    resp=resp+letras[l]+ " ";}}
    }

System.out.print(resp);}

    }

The class compiles fine but im having some issues with my output,more specifically the order of the output:

e.g My input " a b -.- c " What i wanted ".- -... k -.-." What i got ".- -... -.-. k" I believe that's because i used 2 for cycles instead of 1 but i cant really tell how to do it.Would apreciate some help Also when the user writes an impossible character like "*" im suppossed to put an "?" in that position and im also strugling on that i dont know if i should use a if else cycle or what

Please help me and thank you everybody ^^

解决方案

Sorry to be such a noob,but probably is also because ive been here since 8 hours ago but why is this code giving me only the morse code to the letter 'a' a couple times?

import java.util.Scanner;
public class Morse2 {
    public static void main(String[] args){
 String[] abecedario = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
                  "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", 
                  "y", "z"};                  
 String[] MORSE = {
 ".-" ,"-...","-.-.","-.." ,"." , 
 "..-.","--." ,"....",".." ,".---", 
 "-.-" ,".-..","--" ,"-." ,"---" , 
 ".--.","--.-",".-." ,"..." ,"-" , 
 "..-" ,"...-",".--", "-..-","-.--", 
 "--.."}; 
System.out.println("Insira uma frase em codigo morse para uma traducao para texto ou vice-versa");
Scanner in=new Scanner(System.in);
String frase =in.nextLine();
String resp="";
frase=frase.toLowerCase();
String[] palavra=frase.split(" ");
for(int i=0;i< palavra.length;i++){
    String letra=palavra[i];
    String novochar="";

    for (int j=0;j<abecedario.length;j++){
        if (abecedario[j].equals(letra));
        novochar=MORSE[j];
        break;

    }
    if(novochar==""){
        for (int j=0;j<MORSE.length;j++){
        if (MORSE[j].equals(letra));
        novochar=abecedario[j];
        break; 
    }
    }

    if(novochar==""){
        novochar="?";
        continue;

    }   
    resp=resp+novochar+" ";
    }
    System.out.println(resp);
    }
}   

这篇关于为我的编程课创建一个摩尔斯电码翻译器,输出出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆