如何将两个for循环合并为一个(in java)
有没有人知道只用一个循环而不是两个来重写这段代码?如何将两个for循环合并为一个(in java)
String message = "" ;
for(int i=0; i<8; i++) {
for (int j = 0; j<i; j++) {
message = message + "*";
}
message = message + "\n";
}
JOptionPane.showMessageDialog(null, message);
此代码满足要求:
String message = "" ;
String m = "";
for(int i = 0; i < 8; i++)
{
message = message + m + "\n";
m = m + "*";
}
JOptionPane.showMessageDialog(null, message);
对不起,我是一个新手..我应该点击右边的复选标记吗?如果是这样,我只是......再次感谢 – 2014-09-26 02:34:49
for(int i = 0; i < 8; i++){
message += "*******".substring(0, i) + "\n";
}
也应使用StringBuilder
。
@Durandal我也看到了,并纠正它:) – sleeplessnerd 2014-09-25 18:08:38
为什么超过八个恒星的源字符串,当'我'永远不会超过'7'的值? – Bobulous 2014-09-25 18:19:23
因为我不喜欢精确地计算它们。 – sleeplessnerd 2014-09-25 18:19:48
方式一:
String message = "";
String line = "";
for(int i=0; i<8; i++) {
message = message + line + "\n";
line = line + "*";
}
所以,这是有趣的解决方案,味道我的帖子:
String message = "";
for (int i = 0; i < 7; i++) {
message = "*\n" + message.replaceAll("\n", "*\n");
}
我我会把它留给读者来弄清楚这个工作是否,如何和为什么:)
String message = "";
int n = 8;
int s = (int) Math.round((n + 1) * (n * 0.5));
int j = 0, l = 1;
for (int i=0; i < s; ++i) {
int k = Integer.signum(j - i)^1;
message += "*\n".charAt(k);
l += k;
j += (l * k);
}
你疯了,我喜欢你! :) – Aivean 2014-09-25 19:34:03
这里是另外一个,短而有趣的:)
String message = "\n";
for (int i = 0; i < 7; i++) {
message = message + "*" + message.substring(message.length() - i - 1);
}
你为什么写这一点,为什么它需要重写? – ControlAltDel 2014-09-25 18:05:44
请注意,当在循环中创建一个'String'时,使用可变的'StringBuilder'类型(并且如果可能的话,为缓冲区设置一个合理的开始大小)会更有效。 – Bobulous 2014-09-25 18:15:07
我不同意这个问题导致只提供个人意见的答案。该问题要求代码在功能上等同于嵌套for循环,并且可以测试给出的每个答案的正确性。意见不起作用。 – Bobulous 2014-09-27 16:48:30