var trackRight = 0;
var trackLeft = 1;
var x = 570;
var y = 255; //no collision past here
var srcX;
var srcY;
var speed = 25;
var character = new Image();
character.src = "ptera_purple.png";
function updateFrame() {
curFrame = ++curFrame % frameCount;
srcX = curFrame * width;
ctx.clearRect(0, 0, canvas.width, canvas.height, x, y, width, height);
if (left && x > 0) {
srcY = trackLeft * height; //important for sprite direction
x -= speed;
}
if (right && x < canvasWidth - width) {
srcY = trackRight * height;
x += speed;
}
}
var right = false;
var left = false;
document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);
function keyDownHandler(e) {
if (e.keyCode == 39) {
right = true;
} else if (e.keyCode == 37) {
left = true;
}
}
function keyUpHandler(e) {
if (e.keyCode == 39) {
right = false;
} else if (e.keyCode == 37) {
left = false;
}
}
function moveLeft() { // keyboard controls
left = true;
right = false;
}
function moveRight() {
left = false;
right = true;
}
我做错了什么?我觉得我在正确的轨道上,但我不确定什么是错的,这是黑客级别的阵列DS问题。不幸的是,我认为他们没有透露答案。
答案 0 :(得分:1)
将条件更改为i >= 0
,n - 1 >= 0
可能会导致无限循环。但它是否成功并不重要,因为在这两种情况下,它都不会产生所需的结果。
for(int i = n-1; i >= 0; i--){
std::cout << " "<< arr[i] << " ";
}
或使用,std::reverse
。
std::reverse(arr.begin(), arr.end());
for (int i = 0; i < n; i++){
std::cout << arr[i] << " ";
}
请参阅第二种方法live here。
答案 1 :(得分:0)
for(int i = n-1; n-1 >= 0; i--){
cout << " "<< arr[i] << " ";
}
如果n <= 0,则不会减少n,从而导致无限循环。
答案 2 :(得分:0)
不要重新发明轮子,标准库会在这里帮助你。
使用std::reverse
:
int main()
{
std::vector<int> vec;
int n = 0;
int temp = 0;
std::cin >> n;
for (int i = 0; i != n; ++i) {
std::cin >> temp;
vec.emplace_back(temp);
}
std::reverse(std::begin(vec), std::end(vec));
}
答案 3 :(得分:0)
在这两种情况下,您已根据需要初始化变量i = 0并递增(在第一个循环中)/递减(在第二个循环中)。 但是,在第二个循环中,你已经将条件置于n,尽管事实上你永远不会改变n的值。这将导致无限循环,因为n-1在整个程序中保持不变。 要对此进行排序,您应该将条件更改为i-1> 0,如下面的代码所示。
for(int i = n-1; i-1 >= 0; i--)
{
cout << " "<< arr[i] << " ";
}
如果这有帮助,请做好投票。欢呼。
答案 4 :(得分:0)
for(int i = n-1; n-1 >= 0; i--)
在这里,您对for
循环的条件有误。您已将n-1
分配给i
,并且在您使用i--
的减量部分中,因此您应该在应该停止循环时使用条件,或者使用i
的值for(int i = n-1; i >= 0; i--)
循环将停止。所以,只需改变条件如下:
spring.cloud.config.discovery.enabled=true