0

是否有可能创建一个将字母显示为边缘而不是数字的邻接矩阵。例如,加权图。

. a b c d e f  
a 0 1 0 0 0 0  
b 0 0 0 4 0 0  
c 0 0 1 0 0 0  
d 0 0 0 3 0 0  
e 0 2 0 0 0 0  
f 0 0 0 0 0 0  

在完成此类任务时,我已经尝试了所有方法来测试我的理论,例如

int let = 0;
String str = "a b c d e f";
char[] list = new char[str.length()];
for(int i = 0; i < list.length; i++)
{
    list[i] = str.charAt(i);
}
//To create the char array with letters used for the matrix
System.out.println();
for(int i = 0; i < list.length; i++)
{
    System.out.printf("%-3d", list[i]);
}
System.out.println();
for(int i = 0; i < list.length; i++)
{
    System.out.printf("%-3d", list[i]);
    for(int x = 0; x < list.length; x++)
    {
          System.out.printf("%-3d", let);
    }
    System.out.println();
 }

我只是收到一堆关于打印格式和转换等的错误。(目前没有打开日食)

如果我将 (list[i]) 替换为 (i+1) 以获得数字 1-6,它的效果非常好,但对于字母则没有。甚至有可能完成这项任务吗?如果不可能,如何创建一个带有字母边缘的加权矩阵。

这个问题对你们大多数人来说可能并不具有挑战性,但是作为一个初学java程序员,我很好奇学习,即使我不得不谦虚。没有其他学习方法。

4

1 回答 1

1

您可以通过将 int 值转换为char并为所需的 ASCII 字符添加适当的偏移量来打印字母。此示例将打印字母 af。

for (int i = 0; i < 6; i++) {
    System.out.printf("%-3c", (char) (i+97));
}

'a' 的 ASCII 值是 97,'b' 是 98,依此类推。

供参考:ASCII 表

于 2013-10-24T23:34:30.817 回答