请帮帮我:(我想尝试一个直角的替代星号和数字符号。但我只得到这个输出:(我不能在这里放数字符号)
*
**
***
****
*****
******
我想要的是如果我输入6输出是:
*
#
*
#
*
#
如果i输入3,则输出为:
*
#
*
这是我编写的代码:
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
int x=0;
System.out.println("Enter number: ");
x = in.nextInt();
for( int i = 1; i <= x; i++ ){
for( int j = 0; j < i; j++ ){
System.out.print("*");
}
System.out.println();
}
}
}
答案 0 :(得分:0)
只需将"*"
替换为
j < i-1 ? " " : (i % 2 != 0 ? "*" : "#")
这将通过测试行和列位置并写入正确的字符来编写正确的输出。
答案 1 :(得分:0)
我建议您创建一个包含符号的char
数组。您可以使用计数器变量并以这样的方式使用它,即在每次迭代时它将指向您想要显示的字符的索引。
char sym[] = {'#', '*'};
int n = user's input, i,j,c=1;
for(i = 1; i<=n; i++){
for(j = 1; j<i; j++)
System.out.print(" "); //space
System.out.print(sym[c%2]);
c++;
System.out.println();
}
注意:请注意我使用变量c
的方式基本上保持一个整数并找到余数,当它除以2得到索引。
对于n的大输入值,这是一个非常糟糕的主意,但是对于您在问题中提到的各种输入都是有用的。
答案 2 :(得分:0)
您需要在内圈中保留打印空间,并在内环打印*
和/或#
时相应。
Scanner in = new Scanner(System.in);
int x=0;
System.out.println("Enter number: ");
x = in.nextInt();
for(int i=1;i<=x;i++){
for(int j=1;j<=i;j++){
System.out.print(" ");
}
if(i%2==1)
{
System.out.println("*");
}else
{
System.out.println("#");
}
}
答案 3 :(得分:0)
只要具有奇数和偶数值的条件,将#放在偶数上,将*放在奇数上,并从1开始j的值,并且内部for循环的条件应该 j <= i
我刚刚将您的代码更改为如下所示:
for( int i = 1; i <= 6; i++ ){
for( int j = 1; j <=i; j++ ){
if(i==j){
if(i%2==0){
System.out.print("#");
}else{
System.out.print("*");
}
}else{
System.out.print(" ");
}
}
System.out.println();
}
答案 4 :(得分:0)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter number: ");
int x = in.nextInt();
String spaces = "";
boolean star = true;
for (int i = 0; i < x; i++) {
System.out.println(spaces + (star ? "*" : "#"));
spaces += " ";
star = !star;
}
}
这应该是诀窍,快速&amp;容易。