求高手点拨一个“睁眼看呆”的java数据类型不匹配.的异常修改方案.
高手,您好:我碰到了一个错误:

(图1)
上面的第195行,点击后,看到的代码如下:

(图2)
我的上述代码读取的本地数据内容在这里:

图2中的第195行代码的“MyBJMemUserAuthorizeTime”对象,他的类型我定义如下:
import java.util.*;
public class MyArrayList{
/**
*
*/
private static final long serialVersionUID = 1L;
ArrayList<Long> list = new ArrayList<Long>();
public void add(long value){
list.add(value);
}
public void calculate(int index, long value){
if(index >= list.size()){
throw new RuntimeException("下标越界 " + index);
}
list.set(index, list.get(index) + value);
}
public void put(Integer MyNum,long times){
list.set(MyNum, times);
}
public long get(int index){
try {
return list.get(index);
}catch(Exception ex) {
return -1;
}
}
}
(图2中的“ReadTxt类”他的代码如下..:)
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class ReadTxt {
static String MyKey = "CJCO008";
static ArrayList<String> logData = new ArrayList<String>();
static String text = null;
public static void read(String filePath) {
try {
FileReader input = new FileReader(filePath);
BufferedReader br = new BufferedReader(input);
while (( text = br.readLine()) != null) {
logData.add(text);
}
br.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void readCyrpt(String filePath) {
try {
FileReader input = new FileReader(filePath);
BufferedReader br = new BufferedReader(input);
while (( text = br.readLine()) != null) {
String text0 = Systemcrypt.HloveyRC4(text, MyKey);
logData.add(text0);
}
br.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void readMemoryData(String data){
String data0 = Systemcrypt.HloveyRC4(data, MyKey);
logData.add(data0);
}
public static void readMemoryCryptData(String data){
logData.add(data);
}
public static void readMemoryArrayData(String[] data){
int len = data.length;
for(int i = 0;i<len;i++){
logData.add(data[i]);
}
}
public static void readMemoryArrayCryptData(String[] data){
int len = data.length;
for(int i = 0;i<len;i++){
String data0 = Systemcrypt.HloveyRC4(data[i], MyKey);
logData.add(data0);
}
}
}
求高手点拨:
我的这个项目,本身没有上面的报错的,运行了很久,也调试了不短的时间了...
为什么会有:
在我将我的本地储存用户数据的文件由ANSI编码格式转为utf8格式不久,就出现了这个问题...?
经过长时间的调试,我将图2中的代码,又改成了下面的状态:

(我将原来的“Long.parselong();方法”写成了“Long.valueOf();”方法,还是不成...)
之后,我又将原本的数据类型“Long”,修改成了“Double”,并且在“MyArrayList类”中,我也进行了:“对应的修改”,还是不行..
我的修改方式为:
package d_port_package;
import java.util.*;
public class MyArrayList{
/**
*
*/
private static final long serialVersionUID = 1L;
ArrayList<Long> list = new ArrayList<Long>();
public void add(String value){
list.add(Long.parseLong(value));
}
public void calculate(int index, long value){
if(index >= list.size()){
throw new RuntimeException("下标越界 " + index);
}
list.set(index, list.get(index) + value);
}
public void put(Integer MyNum,long times){
list.set(MyNum, times);
}
public long get(int index){
try {
return list.get(index);
}catch(Exception ex) {
return -1;
}
}
}
并且,我在我的图2中的代码里,也进行了对应的修改.但是,结果又出现了“图1中的报错”,很令我纠结。。
我的这块代码,一直运行的很好,我最近的一个操作是:
进行了所有我的用户数据文件txt的转储原来的“ANSI编码格式”为“utf8编码格式”,的操作.
现在,报错了..
经过今天一个晚上的折腾,确实,我没有搞掂.
希望能够得到高手的指导:
错在什么地方?
怎么修改?
谢谢高手的点拨!! --------------------编程问答-------------------- 中间我将原本的Long.parselong();方法改成了:“Long.valueOf();”方法,并且我还将我的图2中的第195行的“ReadTxt.logData.get(i)”的代码修改成了:“Read.logData.get(i).trim();”,的语句..
还是,报原来的错...
很让我纠结.
希望得到高手的点拨:
错在哪里,怎么修改? --------------------编程问答-------------------- 目测只能是 那个数字的末尾是大写字母O --------------------编程问答-------------------- 从描述的问题来看应该是字符编码的问题.看下你在加密的过程中是否有问题 --------------------编程问答--------------------
Long l = Long.parseLong("1377229255190");
System.out.println(l);
没问题。
你最好将ReadText.logData.get(i)打印一下看下 --------------------编程问答-------------------- 将ReadText.logData.get(i)打印一下看看 --------------------编程问答--------------------
在window下面用记事本编辑文件的时候,编码格式转为utf-8会在文本开头添加签名,这个签名在转long型的时候会报错,楼主可以了解下字节序标记方面的知识。把文件编码改成utf-8无bom试试 --------------------编程问答-------------------- 在操作ReadTxt.logData.get(i)之前,
你先输出一下 (ReadTxt.logData.get(i).matches("^[0-9]+$"))。
补充:Java , Java SE