iteye_16594 2008-12-16 16:30
浏览 704
已采纳

用Java怎样把String[] 转换为double[][]

data是double[][]类型的,而我从数据库中取出来是double类型的(或者是String类型(数组)),怎样把之转换为double[][]类型的
[b]问题补充:[/b]
谢谢楼上的朋友。我是在做JFreeChart的时候,在数据库中取得数据,画出图表,以下是我的部分实现(主要是在转换成double[][]时出错啦):

while(it.hasNext()){
Object[] obj = (Object[])it.next();

sdb.append(obj[2].toString()).append("_");}//取得记录

String[] str = sdb.toString().split("_");//转换为String数组
int len = str.length;//计算数组大小

double[][] data = new double[len][len];//定义数组长度
for(int i=0;i<len;i++){
data[0][i] = Double.parseDouble(str[i]);}//填充值

CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);

报:The number of column keys does not match the number of columns in the data array.

请大家帮帮忙,谢谢!
[b]问题补充:[/b]
Sorry,因为我对数据结构不是很清楚。sdb代表StringBuffer,之前听说用这个存储比较好。它里面装的东西仅仅是一些数据,如:{100.00_500_600};(我用"_"作为标识去分隔)
构造出来的格式如:
double[][] data = new double[][]{{100.00},{500},{600}};

  • 写回答

3条回答 默认 最新

  • rednaxelafx 2008-12-17 11:12
    关注

    果然是StringBuffer。这样的话这段代码就不太好了……

    首先,如果你使用的JDK版本在1.5或以上的话,StringBuffer已经不推荐使用了,由StringBuilder所替代。后者的性能跟更好一些。

    其次,你在拼接完字符串之后,如果在实际代码里就跟问题里给出的代码一样,紧接着就做String.split()的话,那就浪费了。用实现了List接口的容器(ArrayList或者LinkedList)来保存中间结果不就好了么,没有必要拼接起来再分开
    [code="java"]ArrayList tempList = new ArrayList();
    while (it.hasNext()) {
    Object[] obj = (Object[])it.next();
    tempList.add(Double.parseDouble(obj[2].toString()));
    // 不知道obj[2]里原本是什么,如果是double的话那直接强制转换类型就好了
    } // 取得记录

    double[] dArray = new double[tempList.size()];
    for (int i = 0; i < dArray.length; ++i) {
    dArray[i] = tempList.get(i);
    } // 得到一行数据对应的double数组[/code]
    当然如果你拼接起来是有别的用途,例如说存到数据库或者存到文本文件的话,那拼接成字符串也不是不行……

    然后double[][]数组的意义。从你的代码看,你是想把一个一维的double数组硬塞到一个二维的double数组里(你的代码里虽然定义了一个len*len的矩阵,却只向其第一行填充了值)。请问你确定这么做是符合你的要求的么?JFreeChart的CategoryDataset需要的数据到底是什么,恐怕你得自己查一下文档去了解一下。有个朋友以前做过一个作业用过JFreeChart的XYPlot,可以看看他是怎么用数据的:[url]http://ravenex.iteye.com/blog/175557[/url](JFreeChart相关的代码在那帖的附件里)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘