gpt4 book ai didi

java - 将偶数和奇数写入 da 文件

转载 作者:行者123 更新时间:2023-12-01 17:30:06 37 4
gpt4 key购买 nike

我已经开始学习 Java,并且在一个简单的程序中遇到问题,该程序应该将一些内容写入 numbers.dat 文件。

我面临两个问题:

  1. 我得到的输出如下:

    2, 6, 12, 20, 30, 42, 56, 72, 90, 110, 132, 156, 182, 210, 240, 272, 306, 342, 380, 420, 462, 506, 552, 600, 650, 702, 756, 812, 870, 930, 992, 1056, 1122, 1190, 1260, 1332, 1406, 1482, 1560, 1640, 1722, 1806, 1892, 1980, 2070, 2162, 2256, 2352, 2450, 2550...

    什么时候应该是:

    对于偶数:

    2,4,6,8,10,12,14,……,98,100

    对于奇数:

    2,4,6,8,10,12,14,……,98,100,1,3,5,7,9,……..97,99

  2. 我的第二个问题是输出没有写入 numbers.dat 文件!一切都是空白。

书中我试图解决的问题是:

Write a program called TextFileIO.java to create a file named numbers.dat. Then create an algorithm that writes all even numbered integers from 1 to 100, separated by a comma.

After the file has been created, close and reopen the file and display the results to the screen. After the results have been displayed append the odd number integers from 1 to 100, separated by a comma to the end of the file. Reopen the file and display the results. The contents of the file should be the even numbers from 1 to 100 separated by a comma followed by the odd number from 1 to 100 separated by a comma. The output of this program would be something like the following:

2,4,6,8,10,12,14,……,98,100

2,4,6,8,10,12,14,……,98,100,1,3,5,7,9,……..97,99

下面是我迄今为止尝试过的代码:

textFileIO.java

package package1;

import java.io.*;
import java.util.*;

//class definition
public class textFileIO{

//The main function
public static void main(String args[]) {

//This declares a file to open.
File outFile = new File("numbers.dat");

int sumEven = 0;
int sumOdd = 0;

//File IO requires a try/catch block to prevent the program from crashing
try {

//a buffered writer is used to allow us to write to the file.
BufferedWriter writer = new BufferedWriter(new FileWriter(outFile));

//This for loop handles adding all of the numbers together
for(int i = 1; i < 100; i += 2) {
sumEven += i + 1;
writer.write("" + sumEven + ", ");
}

//adding a new line and closing the file
writer.newLine();
writer.close();

//A buffered Reader is used for reading a new file.
BufferedReader reader = new BufferedReader(new FileReader(outFile));

//Because I only add a new line at the end, I only need to read the first line.
System.out.println(reader.readLine());

//I need to write again, so I close the reader and open the writer.
reader.close();

//you need to create another object to append to the file
//writer.open();
BufferedWriter writer2 = new BufferedWriter(new FileWriter(outFile));

//This for loop is identical to the previous one, except for odd numbers
for(int i = 1; i < 100; i += 2) {
sumOdd += i;
writer2.write("" + sumOdd + ", ");
}

writer.newLine();
writer.close();

//The same here. You need to create another reader
//reader.open();
BufferedReader reader2 = new BufferedReader(new FileReader(outFile));
System.out.println(reader2.readLine());

}
catch (Exception e) {

}
}
}

编辑2

我更改了代码,这是我的最新代码。我仍然遇到问题。控制台输出屏幕显示 49 和 50 作为输出,而我的numbers.dat 文件现在仅显示以逗号分隔的奇数列表。我现在做错了什么?

import java.io.*;
import java.util.*;
public class TextFileIO {
public static void main(String[] args) throws Exception {
//Clear the contents of numbers.dat if already exists and populated
File fileOne = new File("numbers.dat");
fileOne.delete();
File newFile = new File("numbers.dat");
newFile.createNewFile();
//Create writer object
PrintWriter writer = new PrintWriter(new FileWriter("numbers.dat"));
//Loop from 1 to 100
for (int i = 1; i <= 100; i++) {
//If number is even, write to file
if (i % 2 == 0) {
writer.print(i + ",");
}
}
//Close writer object.
writer.close();
//Read from file
FileInputStream fileStream = new FileInputStream("numbers.dat");
DataInputStream in = new DataInputStream(fileStream);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//Print line
System.out.println(reader.read());
reader.close();
//Write all odd numbers to file
PrintWriter writer2 = new PrintWriter(new FileWriter("numbers.dat"));
//Loop from 1 to 100
for (int i = 1; i <= 100; i++) {
//If number is odd, write to file
if (i % 2 == 1) {
writer2.print(i + ",");
}
}
writer2.close();
//Read from file
FileInputStream fileStream2 = new FileInputStream("numbers.dat");
DataInputStream in2 = new DataInputStream(fileStream2);
BufferedReader reader2 = new BufferedReader(new InputStreamReader(in2));
//Print line
System.out.println(reader2.read());
reader.close();
}


}

编辑3:我仍然无法获得所需的输出。我在控制台中得到的输出仍然是 49 和 50,并且在numbers.dat 文件中,输出仍然只是用逗号分隔的奇数。我无法理解我的代码到底要更改什么。

最佳答案

要打印正确的数字,您应该更改

偶数循环:

//This for loop handles adding all of the numbers together
for(int i = 2; i <=100; i += 2) {
writer.write("" + i + ", ");
}

奇数循环:

//This for loop is identical to the previous one, except for odd numbers
for(int i = 1; i < 100; i += 2) {
writer2.write("" + i + ", ");
}

并替换以下语句:

System.out.println(reader.read());

System.out.println(reader.readLine());

你应该完成了。

编辑

public class textFileIO {
public static void main(String[] args) throws Exception {
//Clear the contents of numbers.dat if already exists and populated
File fileOne = new File("numbers.dat");
fileOne.delete();
File newFile = new File("numbers.dat");
newFile.createNewFile();
//Create writer object
PrintWriter writer = new PrintWriter(new FileWriter("numbers.dat"));
//Loop from 1 to 100
for (int i = 1; i <= 100; i++) {
//If number is even, write to file
if (i % 2 == 0) {
writer.print(i + ",");
}
}
//Close writer object.
writer.close();
//Read from file
FileInputStream fileStream = new FileInputStream("numbers.dat");
DataInputStream in = new DataInputStream(fileStream);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//Print line
System.out.println(reader.readLine());
reader.close();
//Write all odd numbers to file
PrintWriter writer2 = new PrintWriter(new FileWriter("numbers.dat"));
//Loop from 1 to 100
for (int i = 1; i <= 100; i++) {
//If number is odd, write to file
if (i % 2 == 1) {
writer2.print(i + ",");
}
}
writer2.close();
//Read from file
FileInputStream fileStream2 = new FileInputStream("numbers.dat");
DataInputStream in2 = new DataInputStream(fileStream2);
BufferedReader reader2 = new BufferedReader(new InputStreamReader(in2));
//Print line
System.out.println(reader2.readLine());
reader.close();
}
}

这对我来说非常有效,这是输出......

2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100, 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97,99,

关于java - 将偶数和奇数写入 da 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11914450/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com