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