我有一个包含1和0行的文本文件。然而,当我想要实际的数字时,它会打印出乱码,我认为它正确地加载到数组中,但它不是打印的。
10100010
10010010
10110101
11100011
10010100
01010100
10000100
11111111
00010100
代码:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Encoder {
public static void main(String[] args) {
System.out.println("Please enter file Name: ");
Scanner getInput = new Scanner(System.in);
String fileName = getInput.nextLine();
File file = new File(fileName + ".txt");
FileInputStream fstream = null;
try {
fstream = new FileInputStream(file);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
// print the content to console
System.out.println(strLine);
int[] n1 = new int[8];
for (int i = 0; i < 7; i++) {
System.out.println((strLine.charAt(i)));
n1[i] = strLine.charAt(i + 1);
}
for (int n : n1) {
System.out.println(n + " ");
}
ArrayList al = new ArrayList();
}
in.close();
} catch (Exception e) {// Catch exception if any
System.err.println("Error: " + e.getMessage());
}
System.out.println("Even or Odd");
}
}
答案 0 :(得分:0)
您正在打印字符 0,1
的整数值,其值分别为48和49。
n1[i] = strLine.charAt(i + 1);//casts the character to an int here
创建一个字符数组,而不是整数。
即
char[] n1 = char int[8];
而不是
int[] n1 = new int[8];
答案 1 :(得分:0)
你有一个int
数组。您从字符串中获得char
。 char
是无符号的16位int,包含用于映射到字符集的数值。对于US_ASCII / UTF-8,对于字符“0”,这意味着48
,对于字符“1”,意味着49
。当你将它分配给数组中的int时,就是你得到的。
如果你想要字符串(0或1)中每个字符所代表的整数值,最简单的方法就是:
n1[i] = Integer.valueOf(strLine.substring(i, i+1));
Integer
类提供了一种静态方法,用于将整数的String
表示转换为Integer
(当然,取消将其转换为int
)。 String.substring()
会返回String
而不是char
。