Java ...获取每组13的第一个数字

时间:2013-06-04 12:08:57

标签: java mysql

我正在尝试创建一个可以帮助我更新数据库的Java程序。

我有这段代码

for(int i = 1; i < 3095; i++)
    if((i-1)%13==0)
         System.out.println();
     System.out.println("INSERT INTO categories ('"+i+"' , '"+(i+13)+'");

基本上我需要找到一种方法来记录每组13的第一个数字并将其放入System.out.println命令。如何让原始的i+13正常工作?

我正在寻找完成的程序来输出这样的东西:

INSERT INTO categories (categories_id, parent_id) VALUES ('1', '1')
INSERT INTO categories (categories_id, parent_id) VALUES ('2', '1')
INSERT INTO categories (categories_id, parent_id) VALUES ('3', '1')....


INSERT INTO categories (categories_id, parent_id) VALUES ('14', '14')
INSERT INTO categories (categories_id, parent_id) VALUES ('15', '14')
INSERT INTO categories (categories_id, parent_id) VALUES ('16', '14')....etc

4 个答案:

答案 0 :(得分:2)

这是您的代码,可以执行您想要的操作以及更合适的大括号:

    for (int i = 1; i < 3095; i++) {
        if ((i-1) % 13 == 0) {
            System.out.println();
        }
        System.out.println("INSERT INTO categories (categories_id, parent_id) " +
                           "VALUES ('" + i + "' , '" + (i - ((i-1) % 13)) + "')");
    }

答案 1 :(得分:1)

假设iint,由于截断整数除法,i/13*13 + 1 = 0,1,3,..,12,i将为1对于i = 13,14,15,...,25,跳到14,然后跳到27,......

如果您希望1,2,3,... 13的内容为1,然后在14上跳至14,请使用(i-1)/13*13 + 1

答案 2 :(得分:0)

从我对你想做的事情的理解 - &gt;你可以这样做:

int i, j;
    for(i = 1; i < 3095; i+=13) {
        for(j=i; j<i+13; j++)
            System.out.println("INSERT INTO categories ('" + j + "' , '" + i + "\')");
        System.out.println();
        }
    }

输出是这样的:

INSERT INTO categories ('1' , '1') .... INSERT INTO categories ('13' , '1')
INSERT INTO categories ('14' , '14') ... INSERT INTO categories ('26' , '14') 
INSERT INTO categories ('27' , '27') ... INSERT INTO categories ('39' , '27')

依旧......

答案 3 :(得分:0)

不确定,但想到了

SET @num = 0;
INSERT INTO categories (categories_id, parent_id)
    SELECT @num := @num + 1, (@num DIV 13) * 13 + 1
    WHERE @num < 3095;

也许FROM DUAL