java 在一行中打印数组内容

up9lanfz  于 2023-02-20  发布在  Java
关注(0)|答案(1)|浏览(129)
public class morse {
  public static void main(String[] args) {
    String word = "word";
    String[] alphabet = {"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--.."};
    
    for (int i = 0; i < word.length() ; i++) {
      for (int j = 0; j < alphabet.length; j++) {
        if (alphabet[j].charAt(0) == word.charAt(i)) {
          System.out.println(alphabet[j].substring(1).toString());
        }
      }
    }
  }
}

我怎么能在一行打印
我试着在if条件的末尾应用.toString,但也不起作用,还是一样,我主要是想找到一个简单的解决方案。

2w2cym1i

2w2cym1i1#

因此,你可以修改代码,创建一个方法来将一个字符转换成莫尔斯电码字符串,然后,你只需要对这个字符串做三个简单的步骤。
1.将字符串拆分为字符列表
1.使用流库(https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html)将该字符列表Map到字符串列表
1.只需将字符串列表连接成一个由空格分隔的字符串

public class Main {
  static String[] alphabet = {"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--.."};
    
  public static void main(String[] args) {
    String word = "word";
    String morseCode = word.chars()
        .mapToObj(c -> charToMorse((char) c))
        .collect(Collectors.joining(" "));
    System.out.println(morseCode);
  }

  public static String charToMorse(char c) {
    for (int j = 0; j < alphabet.length; j++) {
      if (alphabet[j].charAt(0) == Character.toLowerCase(c)) {
        return alphabet[j].substring(1);
      }
    }
    return "";
  }
}

相关问题