如何将 java 中的 2 个字节的符号读入 short?

问题描述 投票:0回答:3

So f.e.我有一个文件 ala.xs,其中包含:“sąłs”,我想从该文件中读取这些符号,然后将它们放入短裤表中,然后在标准输出上打印它们。我在这方面遇到了一些麻烦,因为我必须将它们作为单个字符读取,然后将这些字符加入短裤中。 这是我的代码:

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Main {
    public static void main(String[] args) throws IOException {
        short [] words = new short[10];
        for(int i = 0 ; i < 10; i++)
            words[i] = 0;
        Reader reading = new FileReader("ala.xs");
        short character;
        int i = 0;
        while ((character = (short) reading.read()) != -1) {
            words[i] = character;
            System.out.println(words[i]);
            i++;
        }
        reading.close();
    }
}

我试着像

System.out.println((char)words[i]);
那样打印它们,但这太愚蠢了。我在 C 中有同样的任务要做,在 C 中我只需要将它们打印为 %c 并且 stdout 自动加入它们(这是我的理论)

java char short
3个回答
0
投票

假设您正在尝试读取输入文件的所有字符,而不是使用

short
的数组直接将字符连接成一个字符串。使用 StringBuilder 比直接连接到 String 更有效,因为 Java 中的 Strings 是不可变的。

应该是这样的:

char character;
StringBuilder text;
while ((character = (char) reading.read()) != -1) {
   text.append(character);
}
String words=text.toString();

0
投票

根据我上面的评论,您的代码的正确容器是

int[]
。知道你的编码是UTF-8,下面应该给你你想要的

public static int[] fileToCodepointArray(Path p) throws IOException {
    byte[] fileContents = Files.readAllBytes(p);
    return new String(fileContents, StandardCharsets.UTF_8).codePoints().
        toArray();
}

-3
投票

只需使用 System.out.print 而不是 System.out.println 即可将其打印到新行。

© www.soinside.com 2019 - 2024. All rights reserved.