请教下,我遇到一个问题,在main方法中data数组存储的默认值不是0是为什么呢,一直是32.0,但是我在debug时显示是正常,一在terminal运行就不对劲了,可见下图
import java.util.InputMismatchException;
import java.util.Scanner;
public class DataManage {
/**
* 提示信息
*/
public void notice() {
System.out.println("********************************************");
System.out.println(" 1--插入数据");
System.out.println(" 2--显示所有数据");
System.out.println(" 3--在指定位置处插入数据");
System.out.println(" 4--查询能被3整除的数据");
System.out.println(" 0--退出");
System.out.println("********************************************");
}
/**
* 显示所有数据
*/
public void showData(int[] data) {
for (int datum : data) {
System.out.println(datum + ' ');
}
}
public int[] insertData(int[] data, int arrLen) {
data = new int[10];
Scanner sc = new Scanner(System.in);
int input = 0;
while (arrLen < 9) {
System.out.println("请输入第" + (arrLen+1) + "个数据:");
input = sc.nextInt();
System.out.println(input);
data[arrLen] = input;
arrLen++;
}
/*for (int datum : data) {
System.out.println(datum + ' ');
}*/
return data;
}
public static void main(String[] args) {
int[] dataArr = {0,0};
float[] data = new float[10];
for (float datum : data) {
System.out.println(datum + ' ');
}
Scanner sc = new Scanner(System.in);
DataManage dm = new DataManage();
dm.notice();
int input = 0;
int arrLen = 0;
while (true) {
System.out.println("请输入对应的数字进行操作:");
try{
input = sc.nextInt();
}catch(InputMismatchException e){
System.out.println("输入的数据格式有误,不能有非数字!");
sc.next();
continue;
}
switch (input) {
//插入数据
case 1:
dataArr = dm.insertData(dataArr, arrLen);
dm.showData(dataArr);
break;
case 2:
if (dataArr != null) {
dm.showData(dataArr);
} else {
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
}
}
}
}
这里的问题System.out.println(datum + ' ');,在这里char类型数据强转为了int型,因为在ASCII表中空格对应的十进制数为32,所以你这里输出的值就是0+32,也就是32
首先 ‘ ’ = 32 ;
0+32 不就是等于 32吗;
float的就是32.0