Java 重编文件并以特定格式在数组中存储字符串和数值
我有一个名为file.txt的输入文件,其中包含Java 重编文件并以特定格式在数组中存储字符串和数值,java,Java,我有一个名为file.txt的输入文件,其中包含 Zone Diameter 5 -321 -560 5811 -209 -580 2935 -27 -409 3580 -1075 -220 2847 -1045 206 2827 -19 410 3570 -205 570 2929 -310 565 5768 2.0 3.0 2.0 Zone Diameter 5
Zone
Diameter 5
-321 -560 5811
-209 -580 2935
-27 -409 3580
-1075 -220 2847
-1045 206 2827
-19 410 3570
-205 570 2929
-310 565 5768
2.0 3.0 2.0
Zone
Diameter 50
4379 461 23390
484 -264 13447
1259 -516 11969
182 -669 9530
1366 -931 12720
1553 2350 -18702
-3458 6112 -24596
-3606 -6347 -24995
1491 -2267 -18694
1315 835 12740
193 631 9525
12 1252 490 11942
13 520 211 13311
14 4308 -174 23624
我正在寻找如下输出:
zone=1
x=[1.0 2.0 1.0 2.0 1.0.......2.0 1.0]
similarly y=[]
z=[]
then
zone=2
x=[5.0 25.0 15 25 41 25 16 25]
similarly y=[]
z=[]
但是,当我使用x.add(scanner.nextDouble())时,我从zone=1的开头获得zone=2的x=[]值
请帮帮我。提前谢谢
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package boltcal1103;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* @author Neha
*/
public class NewMain {
private static ArrayList<Double> x;
private static ArrayList<Double> y;
private static ArrayList<Double> z;
private static String next1;
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException {
// TODO code application logic here
//File file1 = new File("file.txt");
Scanner scanner = new Scanner(new FileReader("file1.txt"));
String line=null,word="Zone",next = null, next1=null;
int count=1;
while(scanner.hasNext()) {
line = scanner.nextLine();
if (line.equals(word)) {
if (count > 1) {
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
// int b;
// String next1;
if(scanner.hasNextLine()){
String nextLine1 = scanner.next();
System.out.println("name :"+nextLine1);
// scanner.useDelimiter("\t");
if(scanner.hasNext())
{
// scanner.useDelimiter(" ");
next1 = scanner.next();
System.out.println("value of diameter:"+next1);
//b = Integer.parseInt(scanner.next());
//System.out.println("value of diameter:"+b);
// scanner.useDelimiter("\n");
scanner.nextLine();
}}
System.out.println("zone=:"+count);
count++;
x = new ArrayList<Double>();
y = new ArrayList<Double>();
z = new ArrayList<Double>();
}
else {
// String delims="";
String[] d = line.split("\t");
// System.out.println("zone=:"+d);
x.add(Double.parseDouble(d[0]));
y.add(Double.parseDouble(d[1]));
z.add(Double.parseDouble(d[2]));
// System.out.println("zone=:"+count);
// System.out.println(d[0]);
// System.out.println(d[1]);
// System.out.println(d[2]);
int i;
for(i=0;i<x.size();i++)
{
Double get1 = x.get(i);
// System.out.println("value of x:"+get1);
Double get2 = y.get(i);
Double get3 = z.get(i);
double x1 = get1*get1;
double y1 = get2*get2;
double z1 = get3*get3;
System.out.println("x1:"+x1+"\ty1:"+y1+"\tz1:"+z1);
} }
}
if (count > 1) {
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
}
/*
*要更改此模板,请选择工具|模板
*然后在编辑器中打开模板。
*/
软件包CAL1103;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
/**
*
*@作者Neha
*/
公共类纽曼{
私有静态数组列表x;
私有静态数组列表y;
私有静态数组列表z;
私有静态字符串next1;
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)引发FileNotFoundException{
//此处的TODO代码应用程序逻辑
//File file1=新文件(“File.txt”);
Scanner Scanner=新的扫描仪(新的文件阅读器(“file1.txt”);
字符串line=null,word=“Zone”,next=null,next1=null;
整数计数=1;
while(scanner.hasNext()){
line=scanner.nextLine();
if(行等于(字)){
如果(计数>1){
系统输出println(x);
系统输出打印项次(y);
系统输出打印ln(z);
}
//int b;
//字符串next1;
if(scanner.hasNextLine()){
String nextLine1=scanner.next();
System.out.println(“名称:”+nextLine1);
//scanner.useDelimiter(“\t”);
if(scanner.hasNext())
{
//scanner.useDelimiter(“”);
next1=scanner.next();
System.out.println(“直径值:+next1”);
//b=Integer.parseInt(scanner.next());
//System.out.println(“直径值:+b”);
//scanner.useDelimiter(“\n”);
scanner.nextLine();
}}
System.out.println(“区域=:”+计数);
计数++;
x=新的ArrayList();
y=新的ArrayList();
z=新的ArrayList();
}
否则{
//字符串delims=“”;
字符串[]d=line.split(“\t”);
//System.out.println(“区域=:”+d);
x、 add(Double.parseDouble(d[0]);
y、 add(Double.parseDouble(d[1]);
z、 add(Double.parseDouble(d[2]);
//System.out.println(“区域=:”+计数);
//System.out.println(d[0]);
//System.out.println(d[1]);
//System.out.println(d[2]);
int i;
对于(i=0;i 1){
系统输出println(x);
系统输出打印项次(y);
系统输出打印ln(z);
}
}
您可以移动
List<Double> x = new ArrayList<Double>(); //Defining double arraylist for Fx
List<Double> y = new ArrayList<Double>(); //Defining double arraylist for Fy
List<Double> z = new ArrayList<Double>(); //Defining double arraylist for Fz
List x=new ArrayList();//为Fx定义双ArrayList
列表y=新ArrayList();//为Fy定义双ArrayList
List z=新建ArrayList();//为Fz定义双ArrayList
在while循环中,因此列表将在每个区域后重置
编辑由于要支持任意大小的区域,请将while循环设置为:
while(scanner.hasNext()) {
line = scanner.next();
if (next.equals(word)) {
if (count > 1) {
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
System.out.println("zone=:"+count);
count++;
x = new ArrayList<Double>();
y = new ArrayList<Double>();
z = new ArrayList<Double>();
} else {
String[] d = line.split(' ');
x.add(Double.parseDouble(d[0]);
y.add(Double.parseDouble(d[1]);
z.add(Double.parseDouble(d[2]);
}
}
if (count > 1) {
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
while(scanner.hasNext()){
line=scanner.next();
if(next.equals(word)){
如果(计数>1){
系统输出println(x);
系统输出打印项次(y);
系统输出打印ln(z);
}
System.out.println(“区域=:”+计数);
计数++;
x=新的ArrayList();
y=新的ArrayList();
z=新的ArrayList();
}否则{
字符串[]d=行分割(“”);
x、 add(Double.parseDouble(d[0]);
y、 add(Double.parseDouble(d[1]);
z、 add(Double.parseDouble(d[2]);
}
}
如果(计数>1){
系统输出println(x);
系统输出打印项次(y);
系统输出打印ln(z);
}
for(int i=0;i如何在for循环中获取一个变量,而不是8,它基本上是区域之间的行数。for(int i=0;i如何在for循环中获得一个变量,而不是8,它基本上是区域之间的行数。这个数字是固定的吗?也就是说,所有区域的行数都相同吗?或者你想检测行数吗?你能清楚地说明你现在得到了什么以及你希望得到什么吗?我仍然不明白。。。