Vla*_*col 1 java io double file comma
有没有人知道如何从文件中正确读取如下所示的输入:
0.12,4.56 2,5 0,0.234
我想要读入2个这样的数组:
a[0]=0.12
a[1]=2
a[2]=0;
b[0]=4.56
b[1]=5
b[2]=0.234
Run Code Online (Sandbox Code Playgroud)
在java中我尝试使用扫描仪,它的工作原理像0 4 5 3.45 6.7898等但我希望它输入顶部的逗号,谢谢你
这是我试过的代码:
import java.io.File;
Run Code Online (Sandbox Code Playgroud)
import java.io.FileNotFoundException; import java.util.Scanner;
public class IFFTI {
public static int size=0;
public static double[] IFFTInputREAL= new double[100];
public static double[] IFFTInputIMAG= new double[100];
static int real=0;
static int k=0;
public static void printarrays(){
for(int k=0;k<size;k++){
System.out.print(IFFTInputREAL[k]);
System.out.print(",");
System.out.print(IFFTInputIMAG[k]);
System.out.print("\n");
}
}
public static void readIFFT(String fileName){
try {
Scanner IFFTI = new Scanner(new File(fileName));
while (IFFTI.hasNextDouble()) {
if(real%2==0){
IFFTInputREAL[k] = IFFTI.nextDouble();
real++;
}
else{
IFFTInputIMAG[k] = IFFTI.nextDouble();
real++;
k++;}
}
try{
size=k;
}catch(NegativeArraySizeException e){}
} catch (FileNotFoundException e) {
System.out.println("Unable to read file");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想这会做你想要的:
String source = "0.12,4.56 2,5 0,0.234";
List<Double> a = new ArrayList<Double>();
List<Double> b = new ArrayList<Double>();
Scanner parser = new Scanner( source ).useDelimiter( Pattern.compile("[ ,]") );
while ( parser.hasNext() ) {
List use = a.size() <= b.size() ? a : b;
use.add( parser.nextDouble() );
}
System.out.println("A: "+ a);
System.out.println("B: "+ b);
Run Code Online (Sandbox Code Playgroud)
这为我输出:
A: [0.12, 2.0, 0.0]
B: [4.56, 5.0, 0.234]
Run Code Online (Sandbox Code Playgroud)
您显然希望使用File作为源.如果你想把它变成double [],你可以使用a.toArray().