是否可以创建一个邻接矩阵,将字母显示为边缘而不是数字。例如,加权图。
. 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程序员,我很想学习,即使我不得不忍受谦虚。没有别的学习方法。
答案 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。