当前位置: 首页 > 知识库问答 >
问题:

在morse码阅读器中将空字符串转换为空白

岑元徽
2023-03-14
9
this is split  = [...., ., -.--, , , .---, ..-, -.., .]
H
H
E
HE
Y
HEY

由于某种原因,一旦它命中null,它就会退出并返回hey,而不是执行nullcount

heynullnulljude转换成heyjude并检测莫尔斯电码中的双空格的最佳方法是什么?

本文摘自本codewars挑战:https://www.codewars.com/kata/54b724efac3d5402db00065e/train/java

import java.util.Arrays;
public class MorseCodeDecoder {
    public static String decode(String morseCode) {
        
       String[] split = morseCode.trim().split(" ");
        int length = split.length;
        System.out.println(length);
        System.out.println("this is split  = " + Arrays.toString(split));

        MorseCode morseCoder = new MorseCode();
        
        String message = "";

        for (int i =0; i < length; i++){
          int nullCount = 0;
            

// this is where the code exits for some reason

            if(morseCoder.get(split[i]) == null{
              nullCount++;
              System.out.println(nullCount);
              if (nullCount == 2){
                nullCount =0;
                message = message + " ";
              }
            }
// if this is "if"statment is removed i get HEYnullnullJUDE

          System.out.println (morseCoder.get(split[i]));
        message = message + morseCoder.get(split[i]);
            System.out.println(message);
              
        }
      return message;
      
    }
}

samble test
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;

public class MorseCodeDecoderTest {
    @Test
    public void testExampleFromDescription() {
      assertThat(MorseCodeDecoder.decode(".... . -.--   .--- ..- -.. ."), is("HEY JUDE"));
    }
}

共有1个答案

朱鹤轩
2023-03-14

您的输入是“.....---------...”

由于您调用了trim()split()将不会看到前导空格或尾随空格。

要将split()的结果中的3个空格视为单个空格,您基本上不希望在3个空格的中间进行拆分。换一种方式说,你只想在一个跟在一个非空格后面的空格上分裂,或者在一个跟在一个非空格后面的空格上分裂。

        Split on these
    ↓ ↓    ↓ ↓    ↓   ↓   ↓
.... . -.--   .--- ..- -.. .
            ↑
      Don't split on this
{ "....", ".", "-.--", " ", ".---", "..-", "-..", "." }

剩下的就交给您了,例如,如何使morseCoder.get(“”)返回“”(或“”,无论类型如何)。

更新

来自备注:

StringBuilder buf = new StringBuider();
for (String symbol : split) {
    if (symbol.equals(" ")) {
        buf.append(' ');
    } else {
        String str = morseCoder.get(split[i]);
        buf.append(str == null ? "�" : str);
    }
}
String message = buf.toString();
 类似资料:
  • 问题内容: 我想在使用Python的模块在Python数据结构和csv表示形式之间来回切换时区分和空字符串。 我的问题是,当我运行时: 我得到以下输出: 当然,我可以使用和区分和清空字符串,例如: 但这会部分破坏我对模块的兴趣(在C中实现快速反序列化/串行化,尤其是在处理大型列表时)。 是否有一个或参数,并能够使他们之间的区别,并在此用例? 如果不是,是否有兴趣实施补丁以实现这种来回交互?(可能是

  • 问题内容: 有什么方法可以将null转换为Integer。null实际上是一个字符串,我在我的服务层中传递该字符串,将其接受为整数。因此,每当我尝试将null字符串强制转换为Integer时,都会引发异常。但是我必须将null转换为Integer。 问题答案: 您 不能 从String强制转换为Integer。但是,如果您尝试将字符串转换为整数,并且必须提供处理字符串的实现,请查看以下代码片段:

  • 问题内容: 我已经编写了一个android程序来将值从Web服务加载到表行。但是值变为null,因此我需要将其转换为字符串。有人可以告诉我这样做的方法吗? 现在从Web服务获取空值,因此我需要将其转换为string 。 LogCat: 问题答案: 用这个,

  • 如果我有 我去拿 <代码>空 有没有一种优雅的方法可以将其更改为空字符串? 我可以做: 上下文是我将生成以下表单的字符串: 字符串myString=a“\n”b“\n”c 但我想知道是否有更好的解决方案。

  • 我想从属性转换空字符串值,并在API响应模型对象中用替换它。 我尝试了这个解决方案,但它在类级别上不起作用。

  • 我的JSON对象有一些空值(“”),所以在转换时会抛出错误。 这是我的JSON 我的代码: 我得到的错误是 com.google.gson.stream.malformedjsonexception 在将JSON对象解析为JSONArray时,如何将空字符串值转换为null? 我希望最终结果是