我正在尝试制作一个程序,从命令行读取两个英文单词,然后输出单词可以互相交叉的所有可能方式。并且如果它们不交叉则打印错误消息。我想使用charAt和length方法..不知道哪里开始..
这是我到目前为止所得到的:
public class Cross2
{
public static void main(String[] args)
{
// create two dimentional array that stores input
private String[][] cross = new String[w1pos][w2pos];
// get input from user
Scanner input = new Scanner(System.in);
System.out.println("Enter two words: ");
String word1 = input.next();
String word2 = input.next();
// loop through length of words
for(int w1pos = 0; w1pos < word1.length(); w1pos++) {
for(int w2pos = 0; w2pos < word2.length(); w2pos++) {
// if characters are equal, print the array
if (word1.charAt(w1pos) == word2.charAt(w2pos))
System.out.println(cross[w1pos][w2pos]);
}
}
答案 0 :(得分:3)
我是这么认为的。我需要循环遍历字符串的长度,然后使用charAt(i)打印每个字符。
这是一个好的开始。
并且是在字母匹配中交叉..所以我需要使用charAt比较每个字符在每个单词中的每个位置
那很好。提示:那么循环多少?
如果不交叉则打印错误消息
提示:......你将如何做到这一点?
不要回答我的问题。他们是暗示。写一些基于它们的代码。
答案 1 :(得分:1)
因此对于“abra”和“cadabra”这两个词,输出会是这样吗?
c
abra
d
a
b
r
a
c
a
d
abra
b
r
a
c
a
d
a
b
r
abra
c
a
d
a
abra
r
a
c
a
d
a
b
abra
a
c
abra
d
a
b
r
a
c
a
d
abra
b
r
a
c
a
d
a
b
r
abra
如果是这样,我建议您使用填充了空格的二维数组,在显示之前将这些空格写入。一次打印一个角色可能要困难得多。
[编辑:]
我不懂Java,所以我不能使用函数,我写的东西比你的东西多得多,但我希望这会有所帮助。
// This is a comment explaining what the code does.
/* This is a comment explaining what you need to add to make the code work. */
public class Cross2
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter two words: ");
String word1 = input.next();
String word2 = input.next();
String[][] cross = new String[word1.length()][word2.length()];
/* Fill 'cross' with spaces */
for(int w1pos = 0; w1pos < word1.length(); w1pos++) {
for(int w2pos = 0; w2pos < word2.length(); w2pos++) {
if (word1.charAt(w1pos) == word2.charAt(w2pos)) {
// Store 'word1' horizontally into 'cross'.
for(int w1posAgain = 0; w1posAgain < word1.length(); w1posAgain++) {
/* Store 'word1.charAt(w1posAgain)' horizontally into 'cross'
at row 'w2pos' and column 'w1posAgain'. */
}
// Store 'word2' vertically into 'cross'.
for(int w2posAgain = 0; w2posAgain < word2.length(); w2posAgain++) {
/* Store 'word2.charAt(w2posAgain)' vertically into 'cross'
at row 'w2posAgain' and column 'w1pos'. */
}
for(int w1posAgain = 0; w1posAgain < word1.length(); w1posAgain++) {
for(int w2posAgain = 0; w2posAgain < word2.length(); w2posAgain++) {
System.out.print(cross[w1posAgain][w2posAgain]);
}
System.out.println();
}
/* Fill 'cross' with spaces.
Yes, really.*/
}
}
}
}
}