使用字母边创建加权矩阵

时间:2013-10-24 23:21:35

标签: java

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

. 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();
 }

我刚刚收到一些关于printformat和转换等的错误。 (此刻不要打开日食)

如果我用(i + 1)替换(list [i])得到数字1-6,它就起作用了,但是对于字母来说却没有。 甚至可以完成这项任务吗?如果不可能的话,如何创建带字母边缘的加权矩阵呢?

对于大多数人来说,这个问题可能并不具有挑战性,但作为初学java程序员,我很想学习,即使我不得不忍受谦虚。没有别的学习方法。

1 个答案:

答案 0 :(得分:1)

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

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

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

供参考:ASCII table