используя цикл for, мне нужно написать код, чтобы поменять местами 2-ю и 3-ю цифры числа, заданного пользователем в javascript.
for ( i = 0; i < entNum.length; i++) {
if (i === 0) num2 = entNum[i];
else if (i === entNum.length - 2) {
newNum = newNum + num2;
newNum = entNum[i] + newNum;
}
else newNum = newNum + entNum[i];
}
console.info("New number:" + newNum)
это код, который я смог создать, однако этот код меняет местами 1-ю и 2-ю цифры в номере, и я, кажется, не могу изменить код таким образом, чтобы нацеливаться на 2-ю и 3-ю цифры, и при этом я на 100% не понимаю циклы и если утверждения. поэтому подробное объяснение было бы полезно.
Почему вы должны использовать цикл, если вы специально меняете местами вторую и третью цифры?
например скажем, entNum = 345 @NinaScholz
это лишь часть вопроса, на который мне нужно ответить, @mykaf
Вы всегда должны объявлять переменные как локальные с помощью let
.
это я просто не включил эту часть своего кода
entNum
— это строка или число? Вы считаете цифры слева или справа?
entNum — это строка, и я думаю, она зацикливается, начиная слева
Обычно вам нужно создать функции для создаваемых вами вещей, чтобы их можно было повторно использовать. Здесь я преобразую ваш номер в строку, а затем разделяю его на массив, меняю местами цифры и объединяю обратно.
function swap(val, x, y) {
let arr = (val + "").split("");
let tmp = arr[x];
arr[x] = arr[y];
arr[y] = tmp;
return parseInt(arr.join(""));
}
console.info(swap(12345, 1, 2));
Если вам действительно нужен цикл, то
function swaps(input, x, y) {
let arr = (input + "").split("");
for (let index = 0; index < x.length; index++) {
let tmp = arr[x[index]];
arr[x[index]] = arr[y[index]];
arr[y[index]] = tmp;
}
return parseInt(arr.join(""));
}
console.info(swaps(123456, [1], [2]));
Задание требует от них использования цикла.
ценю ответ, но конкретно спрашивал о циклах :)
@tamika соответствующим образом отредактировала мой ответ
угу..... для меня это имеет еще меньше смысла :(
Перебирайте входную строку, объединяя каждую цифру с выходной строкой. За исключением случаев, когда индекс равен 1 или 2, добавьте цифру к другому индексу, чтобы поменять их местами.
let entNum = '123456';
let newNum = '';
for (let i = 0; i < entNum.length; i++) {
let digit;
if (i === 1) {
digit = entNum[2];
} else if (i == 2) {
digit = entNum[1];
} else {
digit = entNum[i];
}
newNum += digit;
}
console.info("New number:" + newNum)
Омг, спасибо!! Для меня это имеет гораздо больше смысла и легко понять.
Функция для замены двух последовательных значений с начальной позиции в строке с помощью цикла:
const nr = `1234567`;
for (let i = 0; i < nr.length; i += 1) {
console.info(`@ ${i} => ${swapNumbers(nr, i)}`);
}
console.info(`@ ${10} (just returns the string) => ${swapNumbers(nr, 10)}`);
function swapNumbers(str, atPos){
const nrs = str.split(``);
if (atPos >= nrs.length) { return str; }
for (let i=0; i< nrs.length; i+=1) {
if (i === atPos) {
[nrs[i], nrs[i+1]] = [nrs[i+1], nrs[i]];
break;
}
}
return nrs.join(``)
}
.as-console-wrapper {
max-height: 100% !important;
}
у вас есть примеры? что такое
entNum
?