gpt4 book ai didi

java - 如何正确打印这个三角形字符?

转载 作者:行者123 更新时间:2023-11-30 01:49:54 25 4
gpt4 key购买 nike

此代码要求用户提供三角形高度和字母。

import java.util.*;
public class triangle
{
public static void main(String [] args)
{
Scanner kb = new Scanner(System.in);
int size = 0;
Character c;

System.out.println("Enter height of the triangle : ");
size = kb.nextInt();

System.out.println("Which character you want to use : ");
c = kb.next().charAt(0);

int i, j, k;

for (i = 0; i < size + 1; i++)
{
for (j = size; j > i; j--)
{
System.out.print(" ");
}
for (k = 0; k < (2 * i - 1); k++)
{
System.out.print(c);
}
System.out.println();
}
}
}

对于高度为 3 和字母 b 的情况,当前输出为:

  b
bbb
bbbbb

但应该是:

  b
cbc
dcbcd

如何在上面显示的三角形图案中的给定字母之后打印字母表中的字母?

最佳答案

你的问题

我们来谈谈你的变量 c ,这是 char 。 (实际上, c Character ,它是 char 的盒装等价物,但这并不重要。)

在 Java 中, char is a number type 。全部char s 是数字。例如,char字面量 'a'实际上是数字 97:

'a' == 97; // true

你可以使用 char 进行算术运算,就像处理常规数字一样:

'a' + 1; // 98
'a' + 2; // 99
'a' + 3; // 100

'a'这样的字符之间的映射Java 中的 97 等数字遵循通用标准 Unicode ,旧标准的超集 ASCII 。换句话说,'a' == 97因为 ASCII 是这么说的。这是一个 ASCII 表:

ASCII 和 Java 的 char经过深思熟虑的设计,以便对字符进行算术运算完全按照您的预期进行。研究这些例子:

(char) ('a' + 1); // 'b'
(char) ('a' + 2); // 'c'
(char) ('a' + 3); // 'd'

如您所见,在最后一行中,将 3 添加到 'a'然后将其转换回 char产生'd' ,即 'a' 之后的 3 个字母.

因此,如果您想在某个字符后添加 x 个字母 c ,代码就是(char) (c + x) .

在您的情况下,对于在三角形中打印的每个字母,您希望将用户的字符(在您的示例中为 'b' )增加要打印的字母与中心字母的距离。要打印的信函位于 k 位置,并且中心字母始终位于 i - 1 位置;因此距离是Math.abs(k - (i - 1)) ,或Math.abs(k - i + 1) 。这就是要添加到角色中的量。

有了这些知识,修复代码就很简单了。替换:

for (k = 0; k < (2 * i - 1); k++) 
{
System.out.print(c);
}

与:

for (k = 0; k < (2 * i - 1); k++) 
{
System.out.print((char) (c + Math.abs(k - i + 1)));
}

其他问题

当您在这里时,您也可以修复代码的一些其他问题:

  1. 在 Java 中,类的约定以大写字母开头。这意味着您应该更改:

    public class triangle
    {

    至:

    public class Triangle
    {

    并重命名triangle.javaTriangle.java .

  2. 您不需要在顶部声明变量。最好在第一次需要它们时声明它们,这样您就可以将声明和初始赋值结合起来。例如,而不是:

    int size = 0;
    // ...
    size = kb.nextInt();

    你可以简单地写:

    int size = kb.nextInt();

    这是您的代码,经过重构以解决此问题:

    Scanner kb = new Scanner(System.in);

    System.out.println("Enter height of the triangle : ");
    int size = kb.nextInt();

    System.out.println("Which character you want to use : ");
    Character c = kb.next().charAt(0);

    for (int i = 0; i < size + 1; i++)
    {
    for (int j = size; j > i; j--)
    {
    System.out.print(" ");
    }
    for (int k = 0; k < (2 * i - 1); k++)
    {
    System.out.print((char) (c + Math.abs(k - i + 1)));
    }
    System.out.println();
    }
  3. 您应该使用 char ,不是Character ,对于cCharacter仅当您需要处理 boxing and unboxing 时才应使用(例如,您想定义一个 ArrayList<Character> ),这与您当前的问题无关。所以替换:

    Character c = kb.next().charAt(0);

    与:

    char c = kb.next().charAt(0);
  4. 使用System.out.print()以获得提示。它允许用户在同一行键入答案。而不是:

    System.out.println("Enter height of the triangle : ");
    int size = kb.nextInt();

    System.out.println("Which character you want to use : ");
    char c = kb.next().charAt(0);

    用途:

    System.out.print("Enter height of the triangle: ");
    int size = kb.nextInt();

    System.out.print("Enter character you want to use: ");
    char c = kb.next().charAt(0);

关于java - 如何正确打印这个三角形字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56451238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com