打印阵列然而获得不必要的数字

时间:2014-04-18 15:00:25

标签: java

我有一个包含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");
    }
}

2 个答案:

答案 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数组。您从字符串中获得charchar是无符号的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