我正在尝试创建一个可以帮助我更新数据库的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
答案 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)
假设i
是int
,由于截断整数除法,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
。