我想在java中创建一个类似于this->
的模式*
**
***
****
*****
****
***
**
*
(星数取决于用户输入的数字。)
我知道上半场(增加顺序),但请告诉我如何让剩下的一半(减少顺序)。 感谢。
以下是我的第一部分代码 - >
int y = Integer.parseInt(jTextField1.getText());
for (x = 0; x <= y; x++) {
jTextField2.setText(jTextField2.getText() + "*");
jTextArea1.append(jTextField2.getText() + "\n");
}
答案 0 :(得分:0)
你可以使用类似的东西:
int y = Integer.parseInt(jTextField1.getText());
for(x = y; x>=0; x--){
String s = "";
for(int i = 0; i < x ; i++) {
s += "*";
}
jTextField2.setText(s);
jTextArea1.append(jTextField2.getText()+"\n");
}
请注意,如果效果很重要,您可以使用StringBuffer。
我假设您不想使用外部库。番石榴Strings.repeat对你的问题更好的解决方案。
答案 1 :(得分:0)
降序
for (x = y; x >= 0; x--) {
jTextField2.setText(jTextField2.getText() + "*");
jTextArea1.append(jTextField2.getText() + "\n");
}
答案 2 :(得分:0)
尝试此代码,我希望这将是使用ful
int v = 1;
int totStars = 20;
for (int i = 1; i >= 0; i+=v) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
if(i >= totStars){
v = -1;
}
}
答案 3 :(得分:0)
如果您可以使用Guava,则可以使用以下代码:
int y = Integer.parseInt(jTextField1.getText());
for(x = 0; x<=y; x++){
String s = String.repeat("*", x);
jTextArea1.append(s+"\n");
}
for(x = y; x>=0; x--){
String s = String.repeat("*", x);
jTextArea1.append(s+"\n");
}
此解决方案更直接,但它确实需要外部库
答案 4 :(得分:0)
这是一个递归解决方案,值得花时间弄清楚它是如何工作的:
public void tristar(int n) {
tristar(n, "");
}
public void tristar(int n, String stars) {
if (n == 1) {
System.out.println(stars + "*");
} else {
System.out.println(stars + "*");
tristar(n-1, stars + "*");
System.out.println(stars + "*");
}
}
答案 5 :(得分:-1)
HLO。好友..试试这段代码
int y = Integer.parseInt(jTextField1.getText());
for (x = 0,z=0; x <= (y+y-1); x++) {
if(x<=y){
z++;
}else{
z--;
}
for(int i=0;i<=z;i++){
jTextField2.setText(jTextField2.getText() + "*");
}
jTextArea1.append(jTextField2.getText() + "\n");
}
这将打印完整的模式