我在代码中实现printf
方法时遇到问题。我本周开始了我的第一个Java课程,并试图超越课程。本质上,我要创建ASCII字符,十六进制数字及其十进制等值的输出,最多127个条目。输出中创建的行数由用户输入选择。这是我到目前为止的代码:
package lab1;
import java.util.Scanner;
public class Lab1 {
public static void main(String[] args) {
//declare
Scanner scan = new Scanner(System.in);
//prompt the user to enter an integer, num defines the # of rows displayed in output
System.out.print("How many groups? ");
int num = scan.nextInt();
//print ascii, then hex value, then dec value
for (int c = 0; c < 128; c++) {
String hex = Integer.toString(c , 16);
String output = (char)c + " " + hex + " " + c;
System.out.println(output);
/*
//print the output with printf to create the columns
//character (c), string(s), decimal integer(d)
System.out.printf("%-2c %-2s %-2d", output);
*/
}
}
}
我会在这里发布一张图片,显示最终结果应该是什么,但我需要10点声望。我可以私下给你发电子邮件。
我希望你能帮助我了解如何实现这一目标,或者将我引导到我能够自学的资源中。
谢谢!
答案 0 :(得分:4)
你需要传递与printf中标志相同数量的参数。
for (int c = 0; c < 128; c++) {
// String hex = Integer.toString(c , 16); - No need for this anymore.
// Print the output with printf to create the columns
// character (c), string(s), decimal integer(d)
System.out.printf("%-2c 0x%-2X %-2d%n", (char)c, c, c);
}
使用0x%-2X
,您可以打印出大写的十六进制值。我添加了0x
作为前缀来指定基础。
示例输出:
...
A 0x41 65
B 0x42 66
C 0x43 67
D 0x44 68
E 0x45 69
F 0x46 70
G 0x47 71
H 0x48 72
I 0x49 73
J 0x4A 74
K 0x4B 75
L 0x4C 76
M 0x4D 77
N 0x4E 78
O 0x4F 79
P 0x50 80
Q 0x51 81
R 0x52 82
S 0x53 83
T 0x54 84
U 0x55 85
V 0x56 86
W 0x57 87
X 0x58 88
Y 0x59 89
Z 0x5A 90
...
答案 1 :(得分:2)
您实际上不需要传递多个参数。
for (int c = 0; c < 128; c++) {
// Print ASCII, then hex, then dec
System.out.printf("%1$-2c %1$-2x %1$-2d%n", c);
}
请参阅此处的文档:http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html
答案 2 :(得分:0)
问题是你需要为printf提供三个参数,一个用于char,String和decimal。由于您只传递一个变量(String类型),因此会感到困惑。请记住,在一个String(输出)中连接所有内容会使所有类型为String。
答案 3 :(得分:0)
您需要每个标记与变量对应,并且您的标记需要正确格式化。
要打印ascii,十六进制和十进制值,printf语句应如下所示:
System.out.printf("%-2c - %-2x - %-2f", someChar, someHex, someFloat);
其中someChar是char,someHex是一个int,你希望显示其十六进制值,someFloat是你想要显示的float / double值。
有关Java格式字符串的更多信息,请参阅:http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html