我想创建一个由角色制成的直角三角形。代码会询问您想要三角形的行数,当然最大值为26。当我测试代码时,我输入5(无缘无故)。到目前为止,这是我的代码:
import java.util.*;
public class Uppgift3 {
public static void main (String [] args) {
Scanner input = new Scanner (System.in);
System.out.print("Ange längden på de 2 lika långa sidorna (avsluta med -1): ");
int rader = input.nextInt();
int i = 0;
int j = 0;
int k = 0;
char bokstav = (char)( i + 'A');
for (i=0; i<rader; i++) {
for (j=0; j<i+1; j++) {
System.out.print(bokstav);
}bokstav++;
System.out.println();
}
}
}
这是我之后的输出(如果输入5):
A
AB
ABC
ABCD
ABCDE
这是我在上面的代码中输入5时得到的结果:
A
BB
CCC
DDDD
EEEEE
有人可以帮帮我吗?我是在正确的轨道上,还是我完全失去了?感觉就像后者......是的,这是为了学校。我尽可能多地尝试,现在我被卡住了。
非常感谢!
答案 0 :(得分:0)
您没有在正确的位置增加bokstav变量。您还需要每行重置一次。
试试这个:
public static void main (String [] args)
{
Scanner input = new Scanner (System.in);
System.out.print("Enter the amount of rows your want: ");
int rows = input.nextInt();
char bokstav = 'A';
for(int i=0; i<rows; i++)
{
for(int j=0; j<i+1; j++)
{
System.out.print(bokstav);
bokstav++;
}
bokstav = 'A';
System.out.println();
}
}
答案 1 :(得分:0)
您的解决方案的问题是您只在每行写入后增加字符;在写入每个字符后,您应该增加字符。成功的行写入后,您应该将字符重置为“A”。
for (int i = 0; i < 5; i++) {
char c = 'A';
for (int j = 0; j < i+1; j++) {
System.out.print(c);
c++;
}
System.out.println();
}
我还要指出,此解决方案 not recursion。递归方法的简单定义是将自己调用以找到问题的较小部分的解决方案。例如,打印类似金字塔的递归解决方案看起来像这样。
public static void print(int level) {
if (level <= 0 || level > 26) {
return;
}
print(level - 1);
System.out.println(line(level));
}
public static String line(int level) {
String line = "";
if (level > 0 && level <= 26) {
line = line(level--) + (char)('A' + level);
}
return line;
}
答案 2 :(得分:-1)
试试这个:
char bokstav = 'A';
for (i=0; i<rader; i++) {
bokstav = 'A';
for (j=0; j<i+1; j++) {
System.out.print(bokstav++);
}
System.out.println();
}