我写了一个读取输入然后将其打印出来的程序。
public class inverse {
public static void main (String arg[]) throws IOException {
int input1 = System.in.read();
System.out.println(input1);
String temp= Integer.toString(input1);
System.out.println(temp);
int[] numtoarray =new int[temp.length()];
System.out.println(temp.length());
for (int i=0 ;i<temp.length(); i++)
{numtoarray[i]= temp.charAt(i);
System.out.println(numtoarray[i]+"*");
}
}}
但是当我写123456时它会打印49.但它应该打印123456.是什么导致了这个问题?
答案 0 :(得分:3)
123456
是一个整数,但System.in.read()
将下一个字节作为输入读取,因此它不会按预期读取整数。使用Scanner#nextInt()
方法读取整数:
Scanner input = new Scanner(System.in);
int input1 = input.nextInt();
您的numtoarray
数组也将打印字节,而不是解析为字符串的整数的各个字符。要打印字符,请将类型更改为char[]
:
char[] numtoarray = new char[temp.length()];
System.out.println(temp.length());
for (int i = 0; i < temp.length(); i++) {
numtoarray[i] = temp.charAt(i);
System.out.println(numtoarray[i] + "*");
}
答案 1 :(得分:2)
read()
不读取数字,它读取一个字节并将其值作为int返回。如果输入一个数字,则返回48 +该数字,因为数字0到9的ASCII编码值为48到57.
您可以使用扫描仪
这是代码
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
int input1 = in.nextInt();
System.out.println(input1);
String temp= Integer.toString(input1);
System.out.println(temp);
char[] numtoarray =new char[temp.length()];
System.out.println(temp.length());
for (int i=0 ;i<temp.length(); i++){
numtoarray[i]= temp.charAt(i);
System.out.println(numtoarray[i]+"*");
}
}