Я хочу изменить значения столбцов csv-файла с большим набором данных. поэтому я выделил значения одиночных столбцов (здесь 2-й), а затем нашел стандартное отклонение на 2-х итерацию while loop.1st для поиска среднего и 2-го для поиска стандартного отклонения. стандартное отклонение умножается на извлеченное значение и что значения заменяются им. затем сгенерировать обновленный файл csv. здесь, когда я запускаю код, он успешно сгенерирует новый файл с пустым файлом без цикла итерации цикла. Я думаю, что есть что-то проблемы с циклом while, или он не читает файл. я не знаю, что это такое? стандартное отклонение (σ = √ [(Σ (х - среднее значение)) 2 ÷ N]) Просьба помочь мнеизменить и сгенерировать новый файл csv, извлекая значения столбца
package csvtest7;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.FileWriter;
import java.io.*;
public class Csvtest7 {
public static void main(String[] args)throws IOException {
String filename = "ly.csv";
File file = new File(filename);
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("ly_updated.csv"));
}
catch (IOException e) {
}
try {
Scanner inputStream = new Scanner(file);
inputStream.next();
double Tuple;
int count=0;
Tuple = 0;
double stddev=0;
double stddev1;
double stddev2;
//double Xi;
double MEAN;
double standarddeviation;
while (inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(";");
double balance = Double.parseDouble(values[2]);
balance = balance + 1;
Tuple += balance ;
}
MEAN=Tuple/count;
while (inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(";");
double balance = Double.parseDouble(values[2]);
stddev=balance-MEAN;
stddev1=(stddev*stddev);
stddev2=(stddev1/count);
standarddeviation=Math.sqrt(stddev2);
balance=standarddeviation*balance;
values[2] = String.valueOf(balance);
// iterate through the values and build a string out of them
StringBuilder sb = new StringBuilder();
// String newData = sb.toString();
for (int i = 0; i < values.length; i++) {
sb.append(values[i]);
if (i < values.length - 1) {
sb.append(";");
}
}
// get the new string
System.out.println(sb.toString());
writer.write(sb.toString()+"\n");
}
writer.close();
inputStream.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Csvtest7.class.getName()).log(Level.SEVERE, null, ex);
}
}
im новое в программировании задачи, поэтому я не получаю точную идею, где я меняю код .. могу опубликовать фрагменты кода из 1-го предложения. –
Я отредактировал свой ответ. Пожалуйста, посмотрите и сообщите мне, если это имеет смысл сейчас. – SMA
здесь я думаю, мне нужно 2 цикла, потому что 1-й петле найти среднее, а второе будет использовать его на каждой итерации. –