2016-04-15 1 views
0

Хорошо, поэтому мне нужно написать программу для создания файла с именем Lab13.txt. Напишите десять целых чисел, начиная с [0, 99], созданных случайным образом в файл с помощью ввода/вывода текста. Целые элементы разделяются пробелами в файле. Прочтите данные из файла и отобразите их на консоли. Я уже делал эту часть, но потом должен взять эти числа в этом файле, создать новый файл, умножить все числа в файле Lab13.txt и сохранить их в новом файле. Моя проблема в том, что когда я создаю новый файл, я могу получить его, чтобы умножить последнее число, напечатанное в файле Lab13.txt. Как заставить его умножить все числа в файле Lab13.txt на 10 и распечатать их? Это, вероятно, очень простое решение, и я чувствую себя настолько тупым, что не способен понять это. Создание файлов - это новая вещь, которую мы изучаем, и мой учитель мало помогает. :(Как я могу умножить все числа на 10 в java-файле I/O

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(); 
     } 
    } 
} 
+0

Во-первых, не используйте 'х 'вытекает из предыдущего чтения. 'y' содержит текущую строку с числами. Поэтому вам нужно получить каждое число из строки. И умножение разума на десять просто добавило бы «0» с исключением для числа «0». –

+0

Вам нужно пройти через ваши номера ... прямо сейчас вы берете 'x', который является последним номером, добавленным в файл. Вам нужно «разбить» вашу строку на массив и проанализировать каждый элемент на целое число, а затем умножить каждый на 10. – brso05

+0

Вы можете просто добавить '0' к каждому слову. ;) –

ответ

0

Ваша проблема здесь:

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

Что reader.readLine() говорит читателю сделать, это посмотреть на каждый символ новой строки «\ п» и обрабатывать фрагменты текста между ними, и с тех пор, которого не добавить любой, это обрабатывает весь файл как отдельный кусок.

Что вы можете сделать вместо этого прочитать все содержимое файла в виде строки, а затем разделить его с пространством разделителем (ниже непроверенный код):

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

Вы никогда не читаете отдельные номера из этой линии И x вы умножаете на 10 был последний номер, сгенерированный случайным образом в предыдущем цикле, поэтому проблема

Удалить линию... -

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

Заменить -

String numArray = y.split(" "); for (int i=0; i<numArray.length; i++) { int newNum = Integer.parseInt(numArray[i]) * 10; toWrite += ("" + newNum); }

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(); 
} 

Просто позвоните по этому методу. Должно сработать. Вам в основном нужно разделить строку, используя пробел. как только это будет сделано, разбор каждой строки в целое и умножение. и снова сохраняя.

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(); 
     } 
    } 
} 
Смежные вопросы