我正在编写的代码有两个类:writeInts 和 readInts。我编写了 writeInts 来随机生成 0 到 1000 之间的 100 个数字,并将它们输出到 data.dat 文件中。
readInts 应该打开一个 DataInputStream 对象并从 data.dat 文件中读取“原始”数据并将 100 个整数存储在数组中。我的问题是我似乎无法正确读取数据。任何对此的帮助将不胜感激。谢谢!
写入整数:
import java.io.*;
public class WriteInts {
public static void main(String[] args) throws IOException {
DataOutputStream output = new DataOutputStream(new FileOutputStream("data.dat"));
int num = 0 + (int)(Math.random());
int[] counts = new int[100];
for(int i=0; i<100; i++) {
output.writeInt(num);
counts[i] += num;
System.out.println(num);
}
output.close();
}
}
读取整数:
import java.io.*;
import java.util.*;
public class ReadInts {
public static void main(String[] args) throws IOException {
// call the file to read
Scanner scanner = new Scanner(new File("data.dat"));
int[] data = new int[100];
int i = 0;
while (scanner.hasNextInt()) {
data[i++] = scanner.nextInt();
System.out.println(data[i]);
scanner.close();
}
}
}
如果要写入二进制数据,请使用DataInputStream/DataOutputStream。 扫描仪用于文本数据,不能混合使用。
写入整数:
import java.io.*;
public class WriteInts {
public static void main(String[] args) throws IOException {
DataOutputStream output = new DataOutputStream(new FileOutputStream(
"data.dat"));
for (int i = 0; i < 100; i++) {
output.writeInt(i);
System.out.println(i);
}
output.close();
}
}
读取整数:
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadInts {
public static void main(String[] args) throws IOException {
DataInputStream input = new DataInputStream(new FileInputStream(
"data.dat"));
while (input.available() > 0) {
int x = input.readInt();
System.out.println(x);
}
input.close();
}
}
更多。如果要生成 0 到 1000(含)范围内的随机数,请使用以下语句:
int rndNum = (int) (Math.random() * 1001);
它是这样工作的:Math.random()生成一个范围从0到1(不包括)的双精度值,然后您应该将其映射到整数范围和下限。如果您希望最大值为 1000,则将其乘以 1001 - 1001 本身被排除在外。
是的,就像那样:
import java.io.*;
public class WriteRandomInts {
public static void main(String[] args) throws IOException {
DataOutputStream output = new DataOutputStream(new FileOutputStream(
"data.dat"));
for (int i = 0; i < 100; i++) {
int rndNum = (int) (Math.random() * 1001);
output.writeInt(rndNum);
System.out.println(rndNum);
}
output.close();
}
}
我建议您放弃
DataInputStream
和DataOutputStream
。
使用
FileWriter
将整数 1 写入一行,并使用 BufferedReader
读取它们,每行一个。 这是一个简单的问题。
W 厘×÷„fˆ ð ,8›Í$̺–ä®+þ Ð×9 exŽà‚ 萨…XÓ³ âöpò7N¹ëÀrOÉÀ‘ cø™ª-{÷jé矒ЊÑ6´XËEëAi½½›¿: …r/-Îe[ÜÆÚÊýàÔ2aFN>Ø>叼Îvl7“¿ÁúРjgÎÓ€ª&ä¥Çpv™,3Ð@h6¥́¶%ñökÛnr=G¡V¶ý†ÅÆ2P*&…1I-ö;R
•C.
,üs•äÓ‡-{žä†ÉÀÚ"Z„,ü¿r°%ªSÈ ìK~B›½zïÔ}ݲ†f—³á³¶»c-pÌa ÇË $_Q³Ç V9?ôÁNž^́,i© L&l3Á/ã'¥ø£Q4YíH3Ç †o¥Íc̶̶jÑÝF'́xËC%Ë•Q²m ÆÎâ7òçˆe à佝rª2äg>:
ý,±?HçÿíZ^Dþâ0“Œ ™%¯+ ÎÜLŒàd u·G
HØ€r¤Î„ßÞW²=�gqbv-c�&Òš½rëTÁ„€{§+9É[Íô°ù)�{!j8 ùãRgÔ$}º >Ør°sÕ1á§Ôh“Õ©$¥6ÂsV´Ô— ê¿/툊 9Üì^œ[”Þ1— ®t Ô lÊ´ñ3ÙŒö Í{®uÛ?2-XÙ⁄°Y!l7±ô9·CCΰQJˆ4O (Z´f…yÈŽòÓ!yÚNÔóåG ãU·‡mõ_Ó™Þá7%m- úì4õ¸÷ÅuI~œªÑJØ"¸¼Ÿ|ú²ï)Z|dzMõsÐaÙ,
D §6®P¡Œ'Øýâ뵺Mû+(Þ/‰‘ÈNGágˆÚKËvR¤”ä ě”Ñâ²Ý„ÅÔ?́Ñ"˜SNà°«âPù®ÔbF ‘áö‚ÿ‡»€ø'™Ðu<ø€Z[ ò-s”x’ɵ›žõw¿/ú¬¥~aˆ<TŸªòbõÑÀïõrý^pë7½ÔO˜¼1ƒ-Še(ú)lXǢŲæçê3$”=RA,Yœ’Þ”ªÎèësœ)ˆ„‹!Þ‡Ðõð8_úËKÂßà}J0© _¥j“lÂ%nÑ{x] šPZ3ŽòÛ >#•ÁÓ×›è›Ë]Šì—¤·aœK6ÌŒÂÂ%ža·# dŽÌx-ìÑ 2ôéÜà6}ØnašÈŠÄC]ûàᤠ€¹á
Aì•7€„äò_²⁄ušßôc BeÇ›Qò<[ár‰A³ÛcQ¾¿
B3©ÈLoH¶’¨ßpÀuqumß´,%hŠ#ƒ$!wÃö~×a†…ßYò_à¬ÔÏç§B|²‡nM0ü«6c€LsåĦnž#%œDáú]Š–0qŸâ[ÒÇ1]¬"ÙH2Þ;bpÛíý‰Ó· “´/ æäºý8(ÈίŠ1v™
´«›-~hÑ6´Ÿ'´Y¥E=“§hñ6'þÎ