用户输入一个单词,然后在 java 的新行上打印该单词的字母

User input a word then print letters of the word on a new line for java

我需要帮助才能使用字符串方法、indexOf、子字符串、累加器和 while 循环。我希望用户使用 JOptionPane.showInputDialog 输入一个单词,并将在输出中的一个新行上显示单词的每个字母。在 java 中如何做到这一点?

例如

输入:Dog

输出:

D
o
g

到目前为止,这是我的代码(确实需要更正):

import javax.swing.*;
public class Exercise_28 {
    public static void main(String[] args) {
        String input;
        String letters;
        int num1;
        int num2;

        input = JOptionPane.showInputDialog("Enter a word: ");
        num1 = input.length() - 1;
        num2 = input.length() - num1 - 1;
        letters = input.substring(0, 1);

        while (num2 <= num1) {
            System.out.println(letters);
            num2++;
            letters = input.substring(num2, num2 + 1);
        }
        System.exit(0);
    }
}

代码

import javax.swing.*;
public class Exercise28 {
    public static void main(String[] args) {
        String input = JOptionPane.showInputDialog("Enter a word: ");
        
        //Solution1. input as array using chatAt(index)
        System.out.println("SOLUTION 1");
        int i =0;
        while(i< input.codePoints().count())
        {
            System.out.println(input.charAt(i));
            i++;
        }

        //Solution2. Get a substring beginning at index and take 1 character. Remember endIndex is exclusive. Example substring(3, 4) take character at index = 3 to index = 4(exclusive), total 1 character,
        System.out.println("SOLUTION 2");
        i=0;
        while(i< input.length())
        {
            System.out.println(input.substring(i, i+1));
            i++;
        }

        //Solution3. Works correctly.
        System.out.println("SOLUTION 3");
        input.codePoints().forEach((int codePoint)-> {
            System.out.println(Character.toString(codePoint));
        });

    }
}

解决方案 1 和 2 适用于小于 Character.MAX_VALUE (65535) 的字符,如果您输入的是带有代理项对的 Unicode 字符,则输出可能是错误的。

示例。

输入:
所有解决方案的输出都正常。

SOLUTION 1
D
o
g
SOLUTION 2
D
o
g
SOLUTION 3
D
o
g

输入:AA
解决方案 1 和 2 的输出错误,但解决方案 3 的输出正常。

SOLUTION 1
A
?
?
SOLUTION 2
A
?
?
A
SOLUTION 3
A

A

输出

输入: HelloWorld

SOLUTION 1
?
?
?
?
H
e
l
l
o
W
o
r
l
d
?
SOLUTION 2
?
?
?
?
H
e
l
l
o
W
o
r
l
d
?
?
?
?
?
?
SOLUTION 3


H
e
l
l
o
W
o
r
l
d



您可以这样更改您的代码

 import javax.swing.*;
public class Exercise_28 {
    public static void main(String[] args) {
        String input;
        String letters;
        int num1;
        int num2;

        input = JOptionPane.showInputDialog("Enter a word: ");
        num1 = input.length() - 1;
        num2 = input.length() - num1 - 1;
           //  letters = input.substring(0, 1);

    while (num2 <= num1) {
        letters = input.substring(num2, num2 + 1);
        System.out.println(letters);
        num2++;
    }
    System.exit(0);
    }
}

当您想要输入子字符串而不用 while

检查您的 num2 时会发生错误