0

我正在尝试回答以下问题:

使用数组或 ArrayList 并生成 20 个随机数(0 到 100 之间的整数值。100 不包括在内)。该程序应执行以下任务。

  1. 将数组或 ArrayList 中的数字写入文件。

  2. 从文件中读取数字并以十进制、十六进制和二进制的形式在控制台上显示它们。

到目前为止,我的随机生成器运行良好,并且正在编写文件。至于重新读取文件并将文件中的数字显示为十六进制、十进制和二进制......我完全迷路了。这是我到目前为止。

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;


public class Write {

  public static void main(String[] args) throws IOException {

    Random generator = new Random();

    ArrayList numList = new ArrayList();

    int n = 0;

    while( n < 20 ) {
      int numGen = generator.nextInt(100);
      numList.add(numGen);
      n++;
    }        

    String result = numList.toString().replaceAll("[\\[\\]]", "");
    result = result.replace(",", " ");

    System.out.print(result);

    String filePath = "C:/Users/Username/Desktop/FileIOTest/coding_assignment.txt";
    File f = new File(filePath);
    FileOutputStream fileout = new FileOutputStream (f);

    DataOutputStream dataOut = new DataOutputStream(fileout);

    dataOut.writeBytes(result);

    dataOut.close();
  }      
} 
4

3 回答 3

0

要将数字从基数 10转换为二进制十六进制,您可以简单地使用以下方法:

Integer.toBinaryString(n);
Integer.toHexString(n);

但是,如果您真的想自己编写这些代码,请尝试查看以下网站: http ://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/toBaseK.html

它有助于提供一种简单的算法,可以将基数 10 转换为任何其他数基数。

于 2013-11-12T15:57:44.157 回答
0

我想你应该尝试自己完成这些行,所以我只给你一些基本的输入。

要从文件中读取,需要三行:

fileIn
dataIn
readBytes

这些行应该很容易。要获取数字,请使用

split
Integer.ParseInt

并显示,您可以参考

Integer.toHexString
Integer.toBinaryString
于 2013-11-12T15:51:11.840 回答
0

从您的代码中,您还没有开始编写从文件中读取数字的代码。

关于读取值,您可以使用 BurreferReader 逐行读取数字。然后您可以使用 String.split 方法将数字拆分为一个数组split(" ")

关于将 int 值转换为BinaryHex模式,您可以使用方法toBinaryStringtoHexStringInteger,如

诠释 i = 20;

System.out.println(i);//Print int value
System.out.println(Integer.toBinaryString(i)); //Print Binary string
System.out.println(Integer.toHexString(i)); // Print Hex string

Console中的输出如下:

20
10100
14
于 2013-11-12T15:47:00.600 回答