Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从列表中获取并分配数字-JDBC JAVA SQL_Java_Mysql_Sql_Jdbc - Fatal编程技术网

如何从列表中获取并分配数字-JDBC JAVA SQL

如何从列表中获取并分配数字-JDBC JAVA SQL,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我的数据库有问题,我想从一系列股票中选择,而不是主键,然后将它们分配给系统中的用户 例如,我有一个名为stockCodes的字段,它由CAB001-CAB100这样的代码组成。这不是主键,主键实际上是stockID 这张桌子看起来像这样 ID | Stock Codes -------------------- 1 | CAB001-CAB100 2 | CBA100-CBA200 现在,我如何分解股票代码,以便在Java中得到这样一个列表 CAB001 CAB002 CAB003 CAB

我的数据库有问题,我想从一系列股票中选择,而不是主键,然后将它们分配给系统中的用户

例如,我有一个名为stockCodes的字段,它由CAB001-CAB100这样的代码组成。这不是主键,主键实际上是stockID

这张桌子看起来像这样

ID | Stock Codes
--------------------
1  | CAB001-CAB100
2  | CBA100-CBA200
现在,我如何分解股票代码,以便在Java中得到这样一个列表

CAB001

CAB002

CAB003

CAB004

CAB005


请帮助。

您必须解析文本-它们是否始终遵循相同的3个字母和3个数字格式?如果是这样的话,就可以采取这样的措施:

/**
 * Populate a full list of stocks from a given range
 * 
 * @param stockRange the stock range pulled from the DB, in this format: "XXX###-XXX###"
 * @return list of all stocks in the specified range
 */
public List<String> getFullStockRange(final String stockRange) {
    final String[] values = stockRange.split("-"); 
    final Integer first = Integer.parseInt(values[0].substring(3));
    final Integer last = Integer.parseInt(values[1].substring(3));
    final String prefix = values[0].substring(0, 3);

    final List<String> list = new LinkedList<>();

    for (int i = first; i<= last; i++) {
        final String entry = String.format("%s%03d", prefix, i);
        list.add(entry);
    }

    return list;
}

So可能重复,您有一个包含CAB001-CAB100的字符串,您希望将其拆分为CAB001和CAB100,然后生成CAB002、CAB003等之间的所有值。这与数据库有什么关系?使用字符串。格式%s%03d,前缀,i以避免创建额外的,不必要的StringBuilder。@SamJones我在使用列表时不断出错。它一直说“类型列表不接受任何参数”。最后我使用LinkedList而不是List,并不断得到java.lang.NumberFormatException错误。我想这是因为一些优惠券代码就像101230的饮料。非常感谢你的帮助。如果你能给我指出正确的方向,我将不胜感激。哦,是的,对不起,我更改了优惠券,优惠券的前三位数字是101,接下来的六位数字是唯一的。@user3438012好吧,如果情况更复杂,你必须建立逻辑来处理它。我不确定您在这里到底更改了什么-如果您更新了描述以匹配,这将有所帮助。@SamJones假设前3位数字将是CAB。。然后是8个数字,如00000001-9999999,那么CAB00000001-CAB9999999我们如何重新排列您上面给出的代码以匹配此值?谢谢你的光临advance@user3438012这只是将数字的位数改为零,然后填充你的数字——这应该很容易从我发布的代码中看出。请参见String.format行