用户输入一个单词,然后在 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 时会发生错误
我需要帮助才能使用字符串方法、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 时会发生错误