使用构造函数的java莫尔斯电码problem

问题描述

我有一个使用构造函数的 java 莫尔斯电码赋值。我让代码正常工作,但很难调用构造函数

  1. 我的原始代码
import java.util.Scanner;

public class morseTest {

    public static void main(String[] args) {


    char 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','1','2','3','4','5','6','7','8','9','0',','.','?' };
    

    String morse[] = { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".---.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..",".----","..---","...--","....-",".....","-....","--...","---..","----.","-----","--..--",".-.-.-","..--.." };    



    Scanner sc = new Scanner(system.in);
    String input = sc.nextLine().toLowerCase();    
    
    char[] chars = input.tochararray();

    String str = "";
    for (int i = 0; i < chars.length; i++) {
        for (int index = 0; index < alphabet.length; index++) {
            if (alphabet[index] == chars[i]) {
                str = str + morse[index] + " ";
            }
        } 
    }
    System.out.println(str);
    sc.close();
    }
    
}
  1. 我必须从 Demo.java 的 MorseCode.java 调用并实现一个方法 stringToMorse()。
import java.util.Scanner;
import java.util.*;

public class Demo {
    public static void main(String[] args) {
        // PLACE CODE HERE
        
        Scanner sc = new Scanner(system.in);
        String input = sc.nextLine().toLowerCase();

        MorseCode message = new MorseCode(input);

        System.out.println(message.stringToMorse());
        
    }
}
import java.util.Scanner;

public class MorseCode {
    private static char[] alphabet;
    private static String[] morse;
    private static String input;

    public MorseCode() {
        // PLACE CODE HERE

        char alphabet[] = { 'a','?' };
     

        String morse[] = { ".-","..--.." };              
    }
    
    MorseCode(String s) {
        input = s;
    }

    public static String stringToMorse(String s) {
         // PLACE CODE HERE

         char[] chars = input.tochararray();

         String str = "";
         for (int i = 0; i < chars.length; i++) {
             for (int index = 0; index < alphabet.length; index++) {
                 if (alphabet[index] == chars[i]) {
                     str = str + morse[index] + " ";
                 }
             } 
         }
         return s;
    } 

编译时出现错误提示

Demo.java:13: 错误:MorseCode 类中的方法 stringToMorse 不能应用于给定类型; System.out.println(message.stringToMorse()); ^ 要求:字符串 发现:没有参数 原因:实际和形式参数列表的长度不同 1 个错误

解决方法

public static String stringToMorse(String s) 这个方法需要一个参数。

在调用 message.stringToMorse() 时,没有参数传递给它。

此外,在代码中 stringToMorse 方法被声明为静态方法,因此可以通过 className 调用它。请参考以下代码更改。

public class Demo {
public static void main(String[] args) {
    // PLACE CODE HERE
    
    Scanner sc = new Scanner(System.in);
    String input = sc.nextLine().toLowerCase();

    System.out.println(MorseCode.stringToMorse(input));
    
   }
}

MorseCode 类的代码在 stringToMorse 方法中有错误。它正在返回没有声明的变量 s

import java.util.Scanner;

public class MorseCode {
private static char[] 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','1','2','3','4','5','6','7','8','9','0',','.','?' };


 private static String[] morse= { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".---.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..",".----","..---","...--","....-",".....","-....","--...","---..","----.","-----","--..--",".-.-.-","..--.." };              
    

public static String stringToMorse(String input) {
     // PLACE CODE HERE

     char[] chars = input.toCharArray();

     String str = "";
     for (int i = 0; i < chars.length; i++) {
         for (int index = 0; index < alphabet.length; index++) {
             if (alphabet[index] == chars[i]) {
                 str = str + morse[index] + " ";
             }
         } 
     }
     return str;
}