неожиданный результат при оценке операторов

Спасибо за ваш ответ @geocodezip, если кому-то это понадобится:

https://developers.google.com/maps/documentation/javascript/examples/overlay-symbol-dashed

services.directions.set.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            services.directions.display.setDirections(response);
            var myRoute = response.routes[0].legs[0];
            var lineSymbol = {
                path: 'M 0,-1 0,1',
                strokeOpacity: 1,
                scale: 4
            };
            var line = new google.maps.Polyline({
                path: [myRoute.steps[myRoute.steps.length - 1].end_point, to.geometry.location],
                strokeOpacity: 0,
                strokeColor: "#7d7d7d",
                icons: [{
                    icon: lineSymbol,
                    offset: '0',
                    repeat: '20px'
                }],
                map: map
            });
        }
    });

-3
задан zephyr 16 January 2019 в 00:42
поделиться

2 ответа

Разница между получением 6 и получением 1 состоит в том, думаете ли вы, что j*5 будет оцениваться первым или ++j будет оцениваться первым. Правило в Java состоит в том, что подвыражения оцениваются в порядке, в котором они появляются в выражении, если порядок не определяется зависимостями. Здесь j*5 появляется первым в выражении, поэтому оно вычисляется первым. Это дает результат 1.

0
ответ дан David Schwartz 16 January 2019 в 00:42
поделиться

У вас есть что-то похожее на код ниже:

int j = 0;
int i1 = j*5+ ++j;
System.out.println("j =" + j);
System.out.println("i1 =" + i1);

Вам нужно отредактировать свой код так:

int j = 0;
int i1 = ++j*5 + j;
System.out.println("j =" + j);
System.out.println("i1 =" + i1);

Ваш окончательный вывод для «i1 =» + i1) будет быть 6. Проблема в том, что в вашем первом примере кода вы не увеличиваете J перед тем, как умножить его на 5, поэтому вы увеличиваете его только на +1, потому что вы на самом деле не увеличиваете j, пока не умножите 0 * 5. (0 * 5) + 1 = 1. Я просто увеличил j (в форме префикса), чтобы он увеличился на 1, и теперь вы умножаете (1 * 5) + 1.

0
ответ дан Simeon Ikudabo 16 January 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: