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

Posted

技术标签:

【中文标题】用户输入一个单词然后在java的新行上打印该单词的字母[关闭]【英文标题】:User input a word then print letters of the word on a new line for java [closed] 【发布时间】:2022-01-15 15:15:24 【问题描述】:

我只需要使用 String 方法、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);
    

【问题讨论】:

您还没有提出实际问题。请正确格式化您的代码。 【参考方案1】:

代码

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

输入: A?A 解决方案 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
?
?
?

【讨论】:

【参考方案2】:

你可以这样修改你的代码

 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 时会发生错误

【讨论】:

以上是关于用户输入一个单词然后在java的新行上打印该单词的字母[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用Java中的单词打印元音

如何获取Java以检查某些单词的输入内容

如何在单独的行中打印每个单词。除第一个单词外,每个单词都大写

如何在Java中处理一维数组的跳过输入

Java - 如果单词以用户输入的分隔符结尾,则执行 x

在文件中查找单词