How can i multiply all the numbers by 10 in java file I/O

时间:2016-04-15 15:15:29

标签: java file-io

Okay, so I have to Write a program to create a file named Lab13.txt. Write ten integers ranging [0, 99] created randomly into the file using text I/O. Integers are separated by spaces in the file. Read the data back from the file and display them on the console. I've done this part already, but next I have to take those numbers in that file, create a new file, multiply all the numbers in the Lab13.txt file, and store them in the new file. My problem is when i create the new file, I'm only able to get it to multiply the last number printed from the Lab13.txt file. How do i get it to multiply all the numbers in Lab13.txt file by 10 and print them? This is probably a really simple solution and I feel so dumb for not being able to figure it out. Creating files is the new thing we're learning and my teacher is little to no help. :(

import java.io.*;

public class Lab13 {

    public static void main(String ar[]) {

        String toWrite = "";
        int x=0;
        try {

            File file=new File("Lab13.txt");
            FileWriter filewriter=new FileWriter(file);
            BufferedWriter writer=new BufferedWriter(filewriter);
            for(int i=0;i<10;i++) {
                x=(int)(Math.random()*100);
                writer.write(" "+x);
            }
            writer.close();
        } catch(IOException e) {
            e.printStackTrace();
        }

        try {

            File file1=new File("Lab13.txt");
            FileReader filereader=new FileReader(file1);
            BufferedReader reader=new BufferedReader(filereader);
            String y;
            while((y=reader.readLine())!=null) {
                System.out.println(y);
                toWrite += ("" + x*10);
                System.out.println(toWrite);
            }

        File output = new File("lab13_scale.txt");
        if(!output.exists()) output.createNewFile();
        FileWriter writer = new FileWriter(output.getAbsoluteFile());
        BufferedWriter bWriter= new BufferedWriter(writer);
        bWriter.write(toWrite);
        bWriter.close();
      } catch(Exception e) {
        e.printStackTrace();
      }
    }
}

4 个答案:

答案 0 :(得分:2)

你永远不会从该行读取个别数字。而你乘以10的def extract = (input =~ '<AAA>(.+?)</AAA>')[0][1] 是你在前一个循环中随机生成的最后一个数字。这就是问题的原因。

删除行 -

x

替换为 -

toWrite += ("" + x*10);

答案 1 :(得分:0)

public void multiply() throws Exception{
    //reading from existing file
    BufferedReader br = new BufferedReader(new FileReader("Lab13.txt"));
    String l = br.readLine(); //assuming from your code that there is only one line
    br.flush();
    br.close();
    String[] arr = l.split(" ");
    //writing into new_file.txt
    BufferedWriter bw = new BufferedWriter(new FileWriter("new_file.txt"));
    for(String a : arr){
            bw.write((Integer.parseInt(a)*10) + " ");
    }
    bw.flush();
    bw.close();
}

只需调用此方法即可。应该管用。你基本上需要使用空格分割String。完成后,将每个String解析为Integer并进行乘法运算。并再次存储。

答案 2 :(得分:0)

你的问题在这里:

while((y=reader.readLine())!=null) {
    System.out.println(y);
    toWrite += ("" + x*10);
    System.out.println(toWrite);
}

reader.readLine()告诉读者要做的是查找每个换行符“\ n”并处理其间的文本块,并且由于你没有添加任何内容,因此它将整个文件视为单个块。

您可以做的是将文件的全部内容读取为字符串,然后使用空格分隔符将其拆分(下面是未经测试的代码):

String s = reader.readLine();
String[] allNumbers = s.split(" ");
for(String number : allNumbers) {
    int currentNumber = Integer.parseInt(number);
    bWriter.write(String.valueOf(currentNumber * 10) + " ");
}

答案 3 :(得分:0)

package com.test;

import java.io.*;

public class Lab13
{

    public static void main(String ar[])
    {
        String toWrite = "";
        int x = 0;
        try
        {
            File file = new File("Lab13.txt");
            FileWriter filewriter = new FileWriter(file);
            BufferedWriter writer = new BufferedWriter(filewriter);
            for (int i = 0; i < 10; i++)
            {
                x = (int) (Math.random() * 100);
                writer.write(" " + x);
            }
            writer.close();
        } catch (IOException e)
        {
            e.printStackTrace();
        }


        try
        {
            File file1 = new File("Lab13.txt");
            FileReader filereader = new FileReader(file1);
            BufferedReader reader = new BufferedReader(filereader);
            String y;
            while ((y = reader.readLine()) != null)
            {
                ////////////////////////////////////////

                //trim - delete leading spaces from y
                String[] array = y.trim().split(" ");
                for (int i = 0; i < array.length; i++)
                {
                    int number = Integer.parseInt(array[i]);
                    System.out.println(number);
                    toWrite += (number * 10 + " ");

                }
                System.out.println(toWrite);
                ////////////////////////////////////////
            }


            File output = new File("lab13_scale.txt");
            if (!output.exists()) output.createNewFile();
            FileWriter writer = new FileWriter(output.getAbsoluteFile());
            BufferedWriter bWriter = new BufferedWriter(writer);
            bWriter.write(toWrite);
            bWriter.close();
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}