【发布时间】:2014-01-31 13:00:54
【问题描述】:
我在我的 AP 计算机科学老师分配的一些额外学分方面遇到了一些麻烦。以下是说明:
写一个WordScrambler 方法recombine。该方法返回一个由其两个String 参数创建的String,如下所示:
- 取
word1的前半部分 - 取
word2的后半部分 - 连接两半并返回新字符串
例如,以下几行显示了调用recombine 的一些结果。请注意,如果一个单词有奇数个字母,则单词的后半部分包含多余的字母。
这里是它给出的例子:
“苹果”+“梨”=“apar” “梨”+“苹果”=“人”
然后它说要在下面创建方法重组,只给出一行代码:
private String recombine(String word1, String word2)
然后我必须创建其余部分。我做了一个测试程序只是为了看看我的想法是否正确,我可以使用length() 和substring() 来做(我知道我将不得不在其中使用它们一段时间),然后我会将代码更改为使用private String recombine(word1,word2) 位。所以这是我的测试代码:
public class test
{
private static String word1,word2;
public static void main(String[]args){
word1 = "apple";
word2 = "pear";
int length1 = word1.length();
int length2 = word2.length();
System.out.println(length1);
System.out.println(length2);
int half1 = (int)Math.ceil(length1 / 2);
int half2 = length2 / 2;
System.out.println(half1);
System.out.println(half2);
}
}
输出是:
5
4
2
2
如您所见,变量 half1 应该是 2.5,但由于您不能使用半个字母,它应该向上取整,但即使使用 (int)Math.ceil 它仍然向下取整。当我取出 int,只是想看看它是否可以作为双精度使用时,它给了我一个错误,“可能失去精度,需要:int;发现:双;`
【问题讨论】:
-
所有答案的问题在于它们只是专门针对第一个单词较长的情况。苹果/梨的例子只是一个例子,实际的并没有发布给我。我毫不怀疑,也会有单词 2 更长的单词。我不确定这在那种情况下是否有效(我无法测试,因为我现在在学校,我的计算机科学老师正在讲课,事实上我不应该输入这个)。
-
另外,即使这可行,我如何使它适合'私有字符串重组(word1,word2)`?
-
是的,刚刚发现它确实适用于
int half1 = (length1+1)/2现在我只需要知道如何将它添加到private String recombine(word1,word2)?
标签: java string int double bluej