java - java中如何更改字符数组中的字符

标签 java arrays character

所以我试图改变这个单词列表的元音。 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/

相关文章:

java - Maven jetty 插件和资源目录

javascript - JavaScript 中的数组是用什么数据结构实现的?

c++ - Boost二进制序列化 - 固定长度错误的双数组

utf-8 - 值 NaN 是否有单个 UTF-8 字符表示?

java - Tomcat 是否能够在一个应用程序(BASIC 和 CLIENT-CERT)上使用混合身份验证?

java - 如何将数字格式化为一定数量的小数位加逗号分隔符?

java - 在浏览器窗口中嵌入 Microsoft Word(跨浏览器)

ruby - 为什么在二维数组中赋值会有不同的结果?

Python OCR 与 Pytesseract 的问题

javascript - 验证绘图