【发布时间】:2020-04-09 21:11:09
【问题描述】:
我目前正在上计算机语言入门课程,每个人都有几节课我必须开发一些最小的程序(我们有 5 个不同的提示,必须选择其中的三个来完成)。由于时间的关系,我继续前进并完成了一个不同的程序,但我仍然想了解这个程序出了什么问题。 它应该使用 for 循环和不同的方法将给定的短语翻译成 Pig Latin(在他们的模板中分解,我无法更改,尽管我知道有更有效的方法)。我可以得到要翻译的短语中的单词,但是当我打印出数组时(通过将其转换为字符串或运行 for 循环以分别打印出每个元素),某些元素仅打印参考代码。有人可以告诉我发生了什么事吗?下面是代码,然后是一些打印输出的示例。
import java.util.Arrays;
import java.util.Scanner;
public class PigLatin {
public static void main (String[] args){
Scanner scnr = new Scanner(System.in);
String userWord;
userWord = scnr.nextLine();
userWord = userWord.toLowerCase();
String[] wordArry = userWord.split(" ");
print(wordArry);
}
public static String[] translate(String[] words){
String[] pigLatin = new String[words.length];
for (int i = 0; i < words.length; ++i) {
if (isVowel(words[i].charAt(0)) == true){
pigLatin[i] = words + "ay";
}
else if (words[i].charAt(0) == 'y') {
pigLatin[i] = words[i].substring(findFirstVowel(words[i]), words[i].length()) + words[i].substring(0, findFirstVowel(words[i])) + "ay";
}
else {
pigLatin[i] = words[i].substring(findFirstVowel(words[i]), words[i].length()) + words[i].substring(0, findFirstVowel(words[i])) + "ay";
}
}
return pigLatin;
}
public static int findFirstVowel(String s){
char[] vowList = {'a','e','i','o','u','y'};
for (int i = 1; i < s.length(); ++i) {
for (int j = 0; j < vowList.length; ++j) {
if (s.charAt(i) == vowList[j]) {
return i;
}
}
}
return -1;
}
public static boolean isVowel(char c){
boolean vowel = false;
char[] vowList = {'a','e','i','o','u'};
for (int i = 0; i < vowList.length; ++i) {
if (c == vowList[i]) {
vowel = true;
}
}
return vowel;
}
public static void print(String[] words){
String[] newArry = new String[words.length];
for (int i = 0; i < words.length; ++i) {
newArry[i] = words[i];
}
String finalPrint = Arrays.toString(translate(newArry));
finalPrint = finalPrint.replace("[", "");
finalPrint = finalPrint.replace(",", "");
finalPrint = finalPrint.replace("]", "");
System.out.println(finalPrint);
}
}
以下是一些打印的回复:
输入:西班牙的雨水主要停留在平原 输出:ethay ainray [Ljava.lang.String;@17c68925ay ainspay aysstay ainlymay [Ljava.lang.String;@17c68925ay ethay ainplay 预期:ethay ainray inay ainspay aysstay ainlymay inay ethay ainplay
输入:你应该继续回答汤问题 输出: ouyay ouldshay avehay ayedstay ithway ethay oupsay uestionqay 此打印正确
输入:构成梦想的材料 输出:ethay uffstay atthay eamsdray [Ljava.lang.String;@17c68925ay ademay [Ljava.lang.String;@17c68925ay 预期:ethay uffstay atthay eamsdray areay ademay ofay
我找不到关于为什么会发生这种情况的答案。如果您需要任何其他信息,请告诉我。谢谢!
【问题讨论】: