这个问题与我之前发布的一个问题有关:
在java中解析拆分的csv文件
它与我试图编写的一个方法有关,该方法能够将csv文件拆分为几个不同的数组列表,其中每个列表的数据由一个注释分隔,该注释由“%”表示
这是我写的代码:
ArrayList<ArrayList<int[]>> parseValues(Scanner input, int size)
{
ArrayList<ArrayList<int[]>> output = new ArrayList<ArrayList<int[]>>();
boolean state = false;
boolean lastState = false;
int count = 0;
int i = -1;
System.out.println();
while (input.hasNextLine())
{
String temp = input.nextLine();
if (temp.startsWith("%"))
state = false;
else
state = true;
if (state != lastState)
{
count++;
}
if (count % 2 == 0)
{
output.add(new ArrayList<int[]>());
System.out.println("====new list====");
i++;
}
lastState = state;
if (!temp.startsWith("%"))
{
int j = 0;
int[] values = new int[size];
for (String value: temp.split(","))
{
try
{
values[j] = Integer.parseInt(value);
}
catch (NumberFormatException e)
{
values[j] = 0;
}
j++;
}
output.get(i).add(values);
}
System.out.println("count = " + count + " count%2 = " +
(count%2) + " state = " + state + " lastState = " +
lastState +" output.size() = " + output.size() +
" output[i].size() = " + output.get(i).size());
}
return output;
}
(println语句都只是为了调试)
当我将以下文件输入算法时:
% into ArrayList<Integer> list1
3,4,5,2,2,3
5,6,3,2,4,5
3,2,3,4,5,6
2,3,4,5,1,3
4,3,5,4,3,2
4,4,3,4,5,4
%
% the values below here should go
% into ArrayList<Integer> list2
4,6,3,4,5,3
3,4,5,6,3,2
4,5,6,4,3,2
3,4,3,2,4,5
4,5,3,2,5,3
4,3,4,5,3,2
4,4,3,2,4,5
7,5,4,5,6,7
6,4,3,5,6,4
我得到以下输出:
====new list====
count = 0 count%2 = 0 state = false lastState = false output.size() = 1 output[i].size() = 0
count = 1 count%2 = 1 state = true lastState = true output.size() = 1 output[i].size() = 1
count = 1 count%2 = 1 state = true lastState = true output.size() = 1 output[i].size() = 2
count = 1 count%2 = 1 state = true lastState = true output.size() = 1 output[i].size() = 3
count = 1 count%2 = 1 state = true lastState = true output.size() = 1 output[i].size() = 4
count = 1 count%2 = 1 state = true lastState = true output.size() = 1 output[i].size() = 5
count = 1 count%2 = 1 state = true lastState = true output.size() = 1 output[i].size() = 6
====new list====
count = 2 count%2 = 0 state = false lastState = false output.size() = 2 output[i].size() = 0
====new list====
count = 2 count%2 = 0 state = false lastState = false output.size() = 3 output[i].size() = 0
====new list====
count = 2 count%2 = 0 state = false lastState = false output.size() = 4 output[i].size() = 0
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 1
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 2
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 3
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 4
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 5
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 6
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 7
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 8
count = 3 count%2 = 1 state = true lastState = true output.size() = 4 output[i].size() = 9
这几乎是我想要的,除了它是为每一个状态变化创建额外的列表,而不是每一个第二个状态变化,这就是我想要的。。
我已经和它混在一起很久了,我似乎不能让它做我想让它做的事情。我确定这是非常简单的事情,但我一生都无法解决它。还有其他人知道它为什么要这样做吗?任何帮助将不胜感激。谢谢!
经过多次试验和反复推敲,我终于找到了答案..如果有人对类似的问题感兴趣或者被它困住,这里的这段代码:
if (count % 2 == 0)
{
output.add(new ArrayList<int[]>());
System.out.println("====new list====");
i++;
}
需要更改为:
if (count % 4 == 0)
{
output.add(new ArrayList<int[]>());
System.out.println("====new list====");
count++;
i++;
}
模4确保每2个状态改变就触发一次,而不是每次状态改变,计数确保计数% 4!= 0,因此创建另一个列表..
嘘!这很烦人,但很高兴解决了!
本文向大家介绍Mysql复制表三种实现方法及grant解析,包括了Mysql复制表三种实现方法及grant解析的使用技巧和注意事项,需要的朋友参考一下 如何快速的复制一张表 首先创建一张表db1.t,并且插入1000行数据,同时创建一个相同结构的表db2.t 假设,现在需要把db1.t里面的a>900的数据行导出来,插入到db2.t中 mysqldump方法 几个关键参数注释: –single-t
本文向大家介绍Python实现合并excel表格的方法分析,包括了Python实现合并excel表格的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现合并excel表格的方法。分享给大家供大家参考,具体如下: 需求 将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数 思路 用os库将所需要处理的表格放到同一个列表中,然后遍
复选框问题 编辑文本问题 按钮问题 我已经多次遇到这个问题,通过快速搜索很容易找到许多类似的问题。有时列表视图行布局的动态更改也会影响其他行,有时不会。 作为这个问题的解决方案,我通常会跟踪列表中的全部项目,每次我有一个变化,我都会重置列表中的所有项目。 例如:如果我有一个包含文本视图和复选框的列表,我必须保留一个布尔数组,指示每个复选框的状态,在我的getView()覆盖中,我会根据该数组重置所
本文向大家介绍Python实现简单HTML表格解析的方法,包括了Python实现简单HTML表格解析的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现简单HTML表格解析的方法。分享给大家供大家参考。具体分析如下: 这里依赖libxml2dom,确保首先安装!导入到你的脚步并调用parse_tables() 函数。 1. source = a string contai
我收到了一个包含字符串和元组元素组合的CSV文件,但找不到正确解析它的方法。我错过了什么明显的东西吗? csvfile 第一行是标题,第二行开始数据 产量: csv.reader解析每行不同,因为结构复杂,嵌入了花括号元素。 ...但是我希望每行有20个元素。
我试图使用opencsv 3.3与一些用户解析一个简单的csv文件并将其放入bean中,但在运行代码时得到一个类未找到异常。下面是我用于读取对象的Person.class文件。 读取 csv 的代码如下。 当我运行这个时,它表示没有找到报头映射的类。你知道这个人是否有问题吗。类还是使用映射?如果您能提供任何帮助,我们将不胜感激。