好的,所以我知道还有其他莫尔斯代码的答案,但我看了很多,但没有一个有效。对于我的任务,我是将一个文件Morse.txt读入并行数组。相反,我只做了两个文件,Morse.txt和Alphabet.txt一个用代码,另一个用数字和字母。我应该使用我制作的一个类来做翻译部分,当在main中调用时它应该翻译用户输入。我似乎无法让这个工作。我已经尝试过在类或getter中使用toString这么多的东西,但是当我放入我认为必须存在的循环时(如果有意义的话),找不到返回..无论如何这里是我的代码主:
import java.util.*;
import java.util.Scanner;
import java.io.*;
public class redo
{
public static void main(String[]args) throws IOException
{
String line2, file2 = "Morse.txt";
String line, file = "Alphabet.txt";
File openFile = new File(file);
File openFile2 = new File(file2);
Scanner inFile = new Scanner(openFile);
Scanner inFile2 = new Scanner(openFile2);
int index = 36;
char[] charArray = new char[index];
String[] code = new String[index];
for(index = 0; index < 36; index++)
{
while(inFile.hasNext())
{
line = inFile.nextLine();
charArray = line.toCharArray();
//System.out.println(charArray[index]);
}
}
for(index = 0; index < 36; index++)
{
while(inFile2.hasNext())
{
code[index] = inFile2.nextLine();
//System.out.println(code[index]);
}
}
Scanner keyboard = new Scanner(System.in);
String userInput;
System.out.println("Enter something to translate: ");
userInput= keyboard.nextLine();
Translate inputTranslate = new Translate(userInput);
inputTranslate.setInput(userInput);
inputTranslate.setAlph(charArray);
inputTranslate.setCode(code);
inFile.close();
}
}
这是我的班级翻译(有些东西被注释掉了):
public class Translate
{
String input;
String code[];
char alph[];
public Translate(String input)
{
this.input = input;
}
public void setInput(String input)
{
this.input = input;
}
public void setAlph(char[] alph)
{
this.alph = alph;
}
public void setCode(String[] code)
{
this.code = code;
}
public String getInput()
{
return input;
}
// public String getTranslate()
// {
// for(int i = 0; i < input.length(); i++)
// {
// for(int index = 0; index < alph.length; index++)
// {
// if(input.charAt(i) == alph[index])
// {
// String output = code[index];
// }
// }
// }
// return output;
// }
}
Morse.txt:
---- ..--- ...-- ....- ..... -.... --... --- ..
.- -... -.-。 - .. 。 ..-。 - 。 .... .. .--- -.-
.--。 --.- .-。
..- ...- .-- -..- -.-- - ..
Alphabet.txt: 1 2 3 4 五 6 7 8 9 0 一个 乙 C d Ë F G H 一世 Ĵ ķ 大号 中号 ñ Ø P Q [R 小号 Ť ü V w ^ X ÿ ž
答案 0 :(得分:1)
问题是你的返回无法达到“输出”,你需要在循环上面声明“输出”并将其初始化为output = null;
即便如此,它也只发送一个字符串。所以我这样做了;
public String getTranslate()
{
String output = null;
String[] translated = new String[input.length()];
for(int i = 0; i < input.length(); i++)
{
for(int index = 0; index < alph.length; index++)
{
if(input.charAt(i) == alph[index])
{
output = code[index];
translated[i] = output;
}
}
}
for (int j = 1; j < translated.length; j++) {
output = translated[0].concat(translated[j]);
}
return output;
}
这基本上将所有代码组合在一起,为您提供所需的结果。