ola pessoal,
bom minha duvida é a seguinte: eu estou lendo um arquivo txt, fazendo alguns calculos com os numeros dentro desse arquivo txt e logo em seguida estou escrevendo em outro arquivo txt. Beleza entao, ate agora consegui.
Para criar o arquivo txt que vou produzir (output), eu fiz da seguinte maneira:
double[][] data = new double[gridW * gridL][5];
eu criei um double, porque esse arquivo envolver alguns calculos com numeros grandes. Agora vem o problema: eu preciso justamente de escrever uma palavra quando acontece um caso especial, no entanto o compilador esta acusando erro " Type mismatch: cannot convert from String to double"… Dai eu estava tentando descobrir o problema: eu preciso de escrever um String dentro desse arquivo double, é possivel??? estou fazendo isso:
String varyH = "teste";
data[row][4] = varyH;
o que se passa amigos? abaixo esta o codigo na sua totalidade:
[code]import java.io.;
import java.util.;
import java.text.DecimalFormat;
//5 attributes: x, y, raw value, z-scores, cluster_id
class Formatter
{
public DecimalFormat threeDigits = new DecimalFormat(“0.00”);
int total = 0;
public static void main(String[] args)
{
Formatter fm = new Formatter ();
int gridW = 700; // grid size = 83 x 65
int gridL = 1253;
fm.init ("C:\Users\Play\workspace\ZSc\src\aveveg.txt", gridW, gridL);
}
public void init (String inFilename, int gridW, int gridL)
{
double[][] data = new double[gridW * gridL][5];
readInputs (inFilename, data);
int row = 0;
float countP = 0;
float countN = 0;
double mean = mean (data);
double stdev = stdev (data, mean);
String varyH = "teste";
for (int gl = 0; gl < gridL; gl++)
{
for (int gw = 0; gw < gridW; gw++)
{
data[row][0] = gw; //filling out the first attribute of double data
data[row][1] = gl; //filling out the second attribute of double data
if(data[row][2] != -9999){
data[row][3] = (data[row][2] - mean)/stdev;
}
else data[row][3] = -9999;
// PROBLEMA ESTA AQUI!
if(data[row][3] == -9999)
data[row][4] = varyH;
// figuring out the statistic
if (data[row][3] != -9999){
if(data[row][3] >= 1)
countP++;
if(data[row][3] <= -1)
countN++;
}
row++;
}
}
String outFilename = "C:\Users\Play\workspace\ZSc\src\aveveg1.txt";
writeOutputs (outFilename, data);
}
public double mean (double[][] data)
{
double mResult = 0.0;
double sum = 0.0;
for (int i = 0; i < data.length; i++)
{
if(data[i][2] != -9999){
sum += data[i][2];
total = total + 1;
}
}
mResult = sum/total;
System.out.println("MEAN:" + threeDigits.format(mResult));
return mResult;
}
public double stdev (double[][] data, double mean)
{
double sResult = 0.00;
double tmp = 0.0, sum = 0.0;
for (int i = 0; i < data.length; i++)
{
if(data[i][2] != -9999){
tmp = data[i][2] - mean;
sum += (tmp * tmp);
}
}
sResult = Math.sqrt(sum/(data.length));
System.out.println("STD_DEV:" + threeDigits.format(sResult));
return Math.sqrt (sum/(data.length));
}
public void readInputs (String inFilename, double[][] data)
/* indica que cada token é uma linha do double data e cada dado do arquivo txt
sera colocado na linha 3 do double data*/
{
FileReaderManager reader = new FileReaderManager (inFilename);
String line = null;
int row = 0;
while ((line = reader.read ()) != null)
{
StringTokenizer st = new StringTokenizer (line, " ");
while (st.hasMoreTokens ())
{
data[row++][2] = Double.parseDouble (st.nextToken ());
}
}
reader.close ();
}
public void writeOutputs (String outFilename, double[][] data)
{
FileWriterManager writer = new FileWriterManager (outFilename);
StringBuffer outData = new StringBuffer ();
outData.append ("x,y,raw_value,Z-score_value,analyse\n");
for (int i=0; i<data.length; i++)
{
outData.append (data[i][0] + ",");
outData.append (data[i][1] + ",");
outData.append (data[i][2] + ",");
outData.append (data[i][3] + ",");
outData.append (data[i][4] + "\n");
}
writer.write (outData.toString ());
writer.close ();
}
}[/code]
obrigado pessoal,
abraços