所以我试图改变这个单词列表的元音。 a 会转到 e,e 会转到 i,i 会转到 u,u 会转到 a(大写字母相同)。由于某种原因,我的代码似乎没有改变字符(这也可能是由于我打印的内容所致)。我是否更改了字符数组中的字符,如果是,我的输出是否不正确?我该如何解决这个问题?
我们必须排序的单词在这里:
Pineapple Reading Jester Dragon Table Column Football Sweater Clock Stripes Student Custodian Hat Computer Staircase Stairwell Food Electronic Phone Music Sling Orange Pasta Jacket Door Flag Glass Cake Hatch Intersect Soccer Hockey Writer Fallout Skyrim Pencil Cube Deer Moose Dog Prism Pyramid Wallet Tiger
这是我的输出:
CakeClockColumnComputerCubeCustodianDeerDogDoorDragonIlectronicFalloutFlagFoodFootballGlassHatHatchHockeyOntersectJacketJesterMooseMusicUrangePastaPencilPhonePineapplePrismPyramidReadingSkyrimSlingSoccerStaircaseStairwellStripesStudentSweaterTableTigerWalletWriter
我的代码(注意:前两部分只是从 .txt 文件中获取单词并将单词按字母顺序排列):
import java.io.*;
import java.util.Scanner;
public class WordsWordsWords {
public static void main(String[] args) throws IOException {
File temp = new File("words.txt"); // Searches for the file
Scanner file = new Scanner(temp); // Creates a Scanner
int count = 0; // Finds the number of words that are in the file
while (file.hasNextLine()) // Determines how many words are in the file
{
file.nextLine();
count++;
}
file.close(); // Closes the scanner
String[] wordarr = new String[count]; // Creates an array with each element in the file
Scanner listplacement = new Scanner(temp); // Creates a scanner
for (int i = 0; i < wordarr.length; i++) // Takes each element and assigns a name to each one.
{
wordarr[i] = listplacement.nextLine();
}
listplacement.close(); // Closes the scanner
System.out.println("Your list of names (unsorted):"); // Prints out array of unordered words
for (int i = 0; i < wordarr.length; i++) {
System.out.println(wordarr[i]);
}
for (int i = 0; i < wordarr.length - 1; i++) {
int low = i;
for (int j = i + 1; j < wordarr.length; j++) {
if (wordarr[j].compareTo(wordarr[low]) < 0) {
low = j;
}
}
String tempo = wordarr[low];
wordarr[low] = wordarr[i];
wordarr[i] = tempo;
}
System.out.println();
System.out.println("Alphabetized Names:");
for (int n = 0; n < wordarr.length; n++) {
System.out.println(wordarr[n]);
}
System.out.println();
System.out.println("Names with Switched Letters");
for (int i = 0; i < wordarr.length; i++) {
String NameString = wordarr[i]; // Changes letters of the code
char[] NameChar = NameString.toCharArray();
for (int j = 0; j < NameChar.length; j++) {
if (NameChar[j] == 'A') {
NameChar[j] = 'E';
} else if (NameChar[j] == 'E') {
NameChar[j] = 'I';
} else if (NameChar[j] == 'I') {
NameChar[j] = 'O';
} else if (NameChar[j] == 'O') {
NameChar[j] = 'U';
} else if (NameChar[j] == 'U') {
NameChar[j] = 'A';
} else if (NameChar[j] == 'a') {
NameChar[j] = 'e';
} else if (NameChar[j] == 'e') {
NameChar[j] = 'i';
} else if (NameChar[j] == 'i') {
NameChar[j] = 'o';
} else if (NameChar[j] == 'o') {
NameChar[j] = 'u';
} else if (NameChar[j] == 'u') {
NameChar[j] = 'a';
}
for (j = 0; j < NameChar.length; j++) {
System.out.print(NameChar[j]);
}
}
}
}
}
谢谢!
最佳答案
问题是这个循环的位置:
for (j = 0; j < NameChar.length; j++){
System.out.print(NameChar[j]);
}
您将其放置在另一个循环内,在同一范围内迭代同一变量。在包含循环的第一次迭代结束时,内部循环打印出整个单词,并且还将j
递增到包含循环不会执行任何操作的点更多迭代。
相反,要么将最内层的循环从 j
上的另一个循环中取出,要么只是消除循环部分并使其简单
System.out.print(NameChar[j]);
关于java - java中如何更改字符数组中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32727355/