Как найти потерянную скобку

Делаю проэкт галерею на javascript, потерял скобку.

Ошибка расположена в функции arrows. Пишет, Uncaught SyntaxError: Illegal return statement.

function showImage(event){
    //ПРОВЕРКА И УДАЛЕНИЕ
    //##############
    if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
    }
    if (document.querySelector(".OtherMiniMain")){
        document.querySelector(".OtherMiniMain").classList.remove(".OtherMiniMain");}
    let pictures=document.querySelector(".pictures");
    if (document.querySelector(".selected")){
        document.querySelector(".selected").classList.remove("selected");
    }
    if (document.querySelector(".open")){
        document.querySelector(".open").remove()
    }
    let OtherMains=document.querySelectorAll(".otherMain");
    for (item of OtherMains){
        item.remove()
    }
    let eventImage;
    if (document.querySelector(".miniUpdate")){
        eventImage=document.querySelector(".miniUpdate");
    }
    else {
        eventImage=event.target;
    }
    //ИНИЦИАЛИЗАЦИЯ
    //#############
    let heart=document.querySelector(".heart");
    if (!eventImage.classList.contains("chosenImg")){
        heart.classList.remove("beforeChose")
    }
    else{
        heart.classList.add("beforeChose")
    }
    let main=document.querySelector("main");
    let block=document.querySelector(".show");
    let imageDiv=document.querySelector(".ImgAndArrow");
    eventImage.classList.add("selected")
    block.hidden=false;
    let other=document.querySelector(".other")
    document.body.style.overflow="hidden";
    let image=document.createElement("img");
    image.src=eventImage.src;
    image.classList.add("open");
    imageDiv.append(image);
    let OtherMainImage=image.cloneNode();
    OtherMainImage.classList.add("otherMain");
    OtherMainImage.classList.remove("open");
    OtherMainImage.classList.add("OtherMiniMain")
    createSublings()
    function createSublings(){
        createMini(2,"-");
        createMini(1,"-");
        pictures.append(OtherMainImage)
        if (document.querySelector(".chosen").textContent=="Home"){
            let items=document.querySelectorAll(".chosenImg");
            if (getChosenIndex()==items.length-2){
                createMini(1,"+")
            }
            if (getChosenIndex()<item.length-2){
                createMini(1,"+");
               createMini(2,"+");
            }
            function getChosenIndex(){
                let col=0;
                for (item of items){
                    if (item.classList.contains("selected")){
                        return col
                    }
                    col++
                }

            }}
        else{
            if (getIndex()==main.children.length-2){
            createMini(1,"+");
        }
          if (getIndex()<main.children.length-2){
            createMini(1,"+");
            createMini(2,"+");
        }
        }
        function checkNoneDiv(){
            let col=0;
            for (item of document.querySelectorAll(".noneImageDiv")){
                col++
            }
            return col
        }
        // alert(checkNoneDiv())
        function createMini(num,znak){
            let coords=OtherMainImage.getBoundingClientRect();
            let image=OtherMainImage.cloneNode();
            let Children;
            if (document.querySelector(".chosen").textContent=="Home"){
                // alert("sdf")
                Children=main.querySelectorAll(".chosenImg")
            }
            else{
                Children=main.children
            }
            image.classList.remove("OtherMiniMain");
            if (znak=="-"){
                if (!Children[getIndex()-num]){
                    if (checkNoneDiv()>=2){
                        return
                    }
                    appendNoneDiv()
                    return
                }
                image.src=Children[getIndex()-num].src;
                image.dataset.number=`r${getIndex()-num}`;
                OtherMainImage.dataset.number=`r${Number(image.getAttribute("data-number").split("").slice(1).join(""))+num}`
              pictures.append(image);
            }
            if (znak=="+"){
                if (!Children[getIndex()+num]){
                    if (checkNoneDiv()>=2){
                        return
                    }
                    appendNoneDiv()
                    return
                }
                image.src=Children[getIndex()+num].src;
                image.dataset.number=`r${getIndex()+num}`;
                OtherMainImage.dataset.number=`r${Number(image.getAttribute("data-number").split("").slice(1).join(""))-num}`
                pictures.append(image);
            }
            function appendNoneDiv(){
                let noneDiv=document.createElement("div");
                noneDiv.classList.add("noneImageDiv")
                pictures.append(noneDiv)
            }
        }
        // alert(document.querySelector("main").children[0].src);
        // image.src=main.children[getIndex()-1].src
        // other.append(image);
        // let predImage=OtherMainImage.cloneNode();
        // predImage.style.left=`${coords.left-coords.width*2-45}px`
    }
    function getIndex(){
        let col=0;
        for (item of main.children){
            if (item.classList.contains("selected")){
                return col;
            }
            col++
        }

    }
    let miniClicks=document.querySelectorAll(".otherMain");
   for (item of miniClicks){
    item.addEventListener("click",miniClick)
   }
}
function hideShow(event){
    document.querySelector(".deleteWindow").hidden=true;
    for (item of document.querySelectorAll(".noneImageDiv")){
        item.remove()
    }
    let block=document.querySelector(".show");
    block.hidden=true;
    document.body.style.overflow="auto";
    if (document.querySelector(".miniUpdate")){
        document.querySelector(".miniUpdate").classList.remove("miniUpdate")
}
}   
function miniClick(event){
    document.querySelector(".deleteWindow").hidden=true;
    if (document.querySelector(".noneImageDiv")){
        for (item of document.querySelectorAll(".noneImageDiv")){
            item.remove()
        }
    }
    if (document.querySelector(".miniUpdate")){
        document.querySelector(".miniUpdate").classList.remove("miniUpdate")
    }
    let main=document.querySelector("main");
    if (event.target.getAttribute("data-number")==null){
        return
    }
    let classIndex=Number(event.target.getAttribute("data-number").split("").slice(1).join(""));
    main.children[classIndex].classList.add("miniUpdate");
    showImage()

}
function arrows(event){
    let canDelete;
    let num=1;
    let MainMini=document.querySelector(".OtherMiniMain");
    if (!MainMini){
        return
    }
    if (!MainMini.getAttribute("data-number")){
        hideShow()
        return
    }
    let classIndex=Number(MainMini.getAttribute("data-number").split("").slice(1).join(""));
    if (document.querySelector(".canDelete")){
        if (classIndex<=0){
            document.querySelector(".canDelete").classList.remove("canDelete")
            canDelete=document.querySelector(".arrowRight");
            num=0
        }
        else{
            canDelete=document.querySelector(".arrowLeft");
        }
    }
    else{
        if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
       }
        canDelete=event.target;
    }
    
    if (document.querySelector(".miniUpdate")){
        document.querySelector(".miniUpdate").classList.remove("miniUpdate")
    }
    if (event){
        if (event.key=="ArrowRight"){
            document.querySelector(".deleteWindow").hidden=true;
            let newIndex=classIndex+1;
        if (newIndex>=main.children.length){
            return
        }
        if (document.querySelector(".chosen").textContent=="Home"){
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }}
        if (newIndex==1){
            document.querySelector(".noneImageDiv").remove();
            document.querySelector(".noneImageDiv").remove()
        }
        if (newIndex==2){
            document.querySelector(".noneImageDiv").remove()

        }
        // if (main.children[newIndex])
       main.children[newIndex].classList.add("miniUpdate");
       // if (main.children[newIndex].classList.contains(""))
       showImage()}
       if (event.key=="ArrowLeft"){
        document.querySelector(".deleteWindow").hidden=true;
       let newIndex=classIndex-1;
        if (newIndex<=-1){
            return
        }
        if (document.querySelector(".chosen").textContent=="Home"){
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }}
       main.children[newIndex].classList.add("miniUpdate");
       showImage()
       }
    }

    if (canDelete.className=="arrowRight"){
        let newIndex=classIndex+num;
        if (newIndex>=main.children.length){
            return
        }
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }
        if (newIndex==1){
            document.querySelector(".noneImageDiv").remove();
            document.querySelector(".noneImageDiv").remove()
        }
        if (newIndex==2){
            document.querySelector(".noneImageDiv").remove()

        }
    }
       main.children[newIndex].classList.add("miniUpdate");
       showImage()}
    //LEFT
    if (canDelete.className=="arrowLeft"){
        let newIndex=classIndex-1;
        // if (newIndex<=-1){
        //  return
        // }
        if (document.querySelector(".chosen").textContent=="Home"){
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }}
       main.children[newIndex].classList.add("miniUpdate");
       showImage()
    }
    if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
    }
function deleteImage(event){
    if (!document.querySelector(".selected")){
        return
    }
    if (document.querySelector(".selected").classList.contains("chosenImg")){
        document.querySelector(".heart").classList.remove("beforeChose");
    }
    if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
    }
    let pictures=document.querySelector(".pictures");
    let selected=document.querySelector(".selected");
    let deleteWindow=document.querySelector(".deleteWindow");
    if (!selected){
        hideShow()
        return
    }
    ok=document.querySelector(".deleteOk");
    cancel=document.querySelector(".deleteCancel");
    if (event.key=="Delete"|| event.target.classList.contains("trash")){
        deleteWindow.hidden=false;
        ok.addEventListener("click",deleteWindowButttons);
        cancel.addEventListener("click",deleteWindowButttons);
        document.addEventListener("keydown",deleteWindowButttons)
    }
}
function deleteWindowButttons(event){
    let pictures=document.querySelector(".pictures");
    let selected=document.querySelector(".selected");
    let deleteWindow=document.querySelector(".deleteWindow");
    if (event.target.classList.contains("deleteOk") || event.key=="Enter"){
        selected.remove();
        deleteWindow.hidden=true;
       pictures.classList.add("canDelete");
       arrows()
    }
    if (event.target.classList.contains("deleteCancel") || event.key=="Escape"){
        deleteWindow.hidden=true;
    }
    
}
function showWindowfromImage(event){
    if (document.querySelector(".selectedForRight")){
        document.querySelector(".selectedForRight").classList.remove("selectedForRight")
    }
    event.target.classList.add("selectedForRight")
    let whiteWindow=document.querySelector(".window");
    let deleteW=document.querySelector(".windowDeleteImg");
    if (!event.target.parentNode.tagName){
        return
    }
    if (event.target.parentNode.tagName!="MAIN" || event.target.tagName!="IMG"){
        whiteWindow.hidden=true;
        return
    }
    // alert(event.target.parentNode.tagName)
    whiteWindow.hidden=false;
    whiteWindow.style.left=event.pageX+"px";
    whiteWindow.style.top=event.pageY+"px";
    deleteW.addEventListener("click",deleteOrChosen)
    event.preventDefault();
}
function deleteOrChosen(event){
    document.querySelector(".selectedForRight").remove()
}
function ShowChosenBlock(event){
    let show=document.querySelector(".show")
    let main=document.querySelector("main");
    let images=main.querySelectorAll("img");
    document.querySelector(".deleteWindow").hidden=true;
    show.hidden=true;
    if (event.target.textContent=="Chosen"){
        for (item of images){
            if (!item.classList.contains("chosenImg")){
                item.hidden=true;
        }
    }
        document.body.style.background="rgba(255, 197, 249, 1)";
        event.target.textContent="Home";
        return  
    }
    if (event.target.textContent=="Home"){
        for (item of images){
            item.hidden=false;
        }
        document.body.style.background="rgba(136, 134, 134, 1)";
        event.target.textContent="Chosen";
        return  
    }}
function addToChosen(event){
    let selected=document.querySelector(".selected");
    if (selected.classList.contains("chosenImg")){
        selected.classList.remove("chosenImg")
        document.querySelector(".heart").classList.remove("beforeChose");
        return
    }
    selected.classList.add("chosenImg");
    document.querySelector(".heart").classList.add("beforeChose");

}



//РАБОТА ПРОГРАММЫ
let heart=document.querySelector(".heart");
heart.addEventListener("click", addToChosen)
let chosen=document.querySelector(".chosen");
chosen.addEventListener("click",ShowChosenBlock);
let bin=document.querySelector(".trash");
bin.addEventListener("click",deleteImage);
document.addEventListener("keydown",deleteImage);
let arrowLeft=document.querySelector(".arrowLeft");
let arrowRight=document.querySelector(".arrowRight");
arrowLeft.addEventListener("click",arrows);
arrowRight.addEventListener("click",arrows);
document.addEventListener("keydown",arrows)
let left=document.querySelector(".left");
left.addEventListener("click",hideShow)
let main=document.querySelector("main");
let images=main.querySelectorAll("img");
document.addEventListener("contextmenu",event=>event.preventDefault())
for (item of images){
    item.addEventListener("click",showImage);
    // item.addEventListener("contextmenu",showWindowfromImage);
}
let whiteWindow=document.querySelector(".window");
document.addEventListener("contextmenu",showWindowfromImage);
document.addEventListener("click",event=>whiteWindow.hidden=true);
document.addEventListener("scroll",event=>whiteWindow.hidden=true);
window.addEventListener("resize",event=>whiteWindow.hidden=true);

0 / 0 / 1

Регистрация: 04.08.2015

Сообщений: 99

1

Оптимальный поиск потеряной скобки

10.08.2015, 00:30. Показов 2244. Ответов 12


Студворк — интернет-сервис помощи студентам

написал большой кусок кода, запустил компиляцию, нашел все синтаксические ошибки, кроме одной:

где-то потеряна скобка «}»

все остальные ошибки искались просто — Ctrl+F или по номеру строки с ошибкой, в баг-репорте компилятора

какими способами (кроме брут-форса, т.е. не перечитывая весь код) возможно найти её?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.08.2015, 00:30

12

Привалов Григор

Заблокирован

10.08.2015, 00:34

2

Вот поэтому я и люблю делфи. Там бегины. А по поводу вашего кода — думаю никакими.



0



0 / 0 / 1

Регистрация: 04.08.2015

Сообщений: 99

10.08.2015, 00:38

 [ТС]

3

в делфи бегин-енды , это те же яйца, только в профиль…



0



Эксперт С++

8724 / 4304 / 958

Регистрация: 15.11.2014

Сообщений: 9,751

10.08.2015, 00:40

4

Цитата
Сообщение от Привалов Григор
Посмотреть сообщение

Вот поэтому я и люблю делфи. Там бегины. А по поводу вашего кода — думаю никакими.

Не по теме:

написал большой кусок кода, запустил компиляцию, нашел все синтаксические ошибки, кроме одной:
где-то потерян end
все остальные ошибки искались просто — Ctrl+F или по номеру строки с ошибкой, в баг-репорте компилятора
какими способами (кроме брут-форса, т.е. не перечитывая весь код) возможно найти его?

— Вот поэтому я и люблю с++. Там }. А по поводу вашего кода — думаю никакими.



1



алкокодер

157 / 153 / 41

Регистрация: 27.12.2012

Сообщений: 550

10.08.2015, 00:44

5

Переписать всё по новой!



0



0 / 0 / 1

Регистрация: 04.08.2015

Сообщений: 99

10.08.2015, 00:45

 [ТС]

6

Цитата
Сообщение от UnsKneD
Посмотреть сообщение

Переписать всё по новой!

да тут смотрю сплошь юмористы



0



алкокодер

157 / 153 / 41

Регистрация: 27.12.2012

Сообщений: 550

10.08.2015, 01:03

7

ТомСойер, покажи что ли код



1



Неэпический

17813 / 10585 / 2043

Регистрация: 27.09.2012

Сообщений: 26,625

Записей в блоге: 1

10.08.2015, 01:07

8

Цитата
Сообщение от ТомСойер
Посмотреть сообщение

какими способами (кроме брут-форса, т.е. не перечитывая весь код) возможно найти её?

надо было код структурировать нормально, тогда бы не возникло такого. Для опыта можете написать себе велосипед поиска несоответствия скобок, чтобы вручную не просматривать, может потом еще пригодится
И вообще, в нормальных редакторах кода, обычно, подсвечиваются парные скобки, вот и ищите несоответствующую пару.



1



58 / 45 / 11

Регистрация: 16.09.2014

Сообщений: 124

10.08.2015, 01:18

9

Лучший ответ Сообщение было отмечено ТомСойер как решение

Решение

В Visual studio ctrl+k, ctrl+d — это форматирование кода, там по отступам визуально будет понятно где потерялась скобка.



1



Модератор

Эксперт CЭксперт С++

5148 / 2327 / 339

Регистрация: 20.02.2013

Сообщений: 5,718

Записей в блоге: 20

10.08.2015, 05:26

10

Цитата
Сообщение от ТомСойер
Посмотреть сообщение

какими способами (кроме брут-форса, т.е. не перечитывая весь код) возможно найти её?

  1. писать код в любом редакторе кода, в любой IDE, умеющими в подсветку синтаксиса (в том числе и фигурных скобок) — Notepad++, Code::Blocks, Codelite, QtCreator, MS Visual Studio;
  2. писать нормально структурированный код (с нормальными отступами);



0



0 / 0 / 1

Регистрация: 04.08.2015

Сообщений: 99

10.08.2015, 08:31

 [ТС]

11

Цитата
Сообщение от Pancir
Посмотреть сообщение

В Visual studio ctrl+k, ctrl+d — это форматирование кода, там по отступам визуально будет понятно где потерялась скобка.

то что нужно было, спасибо
оказалось, потерались 3 закрывающие скобки

Цитата
Сообщение от UnsKneD
Посмотреть сообщение

покажи что ли код

какой смысл, если я сам должен учиться искать простые ошибки?

задача решена, всем спасибо



0



Почетный модератор

Эксперт С++

5850 / 2861 / 392

Регистрация: 01.11.2011

Сообщений: 6,907

10.08.2015, 09:28

12

Цитата
Сообщение от ТомСойер
Посмотреть сообщение

то что нужно было

Впредь указывайте конкретную вашу студию. Ведь для конкретной среды будут и конкретные действия.



1



0 / 0 / 0

Регистрация: 10.08.2015

Сообщений: 1

10.08.2015, 09:33

13

Используй нормальную IDE, например от JetBrains



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.08.2015, 09:33

13

Здравствуйте уважаемые пользователи форума pawno-crmp.

Этот минуал подойдет тем, у кого в моде есть незакрытая скобка, и если стандартные способы не помогают найти ее. Если стандартными способами найти незакрытую скобку не получается, то Вы попали по адресу.

Итак, начнем.

Сегодня я столкнулся с такой проблемой, как незакрытая скобка. Как известно, если в коде имеется незакрытая скобка, то при компилировании компилятор вылетает не показав ошибку. Я перепробовал стандартные способы как найти незакрытую скобку, но они не подходят, так как у меня в коде (ну наверно не только у меня) есть за комментированные скрипты типа таких:

/*
public test()
{
new blablalbla;

*/ 
Дело в том, что программы подсчитывающие количество открытых и закрытых скобок считают за комментированные скобки, поэтому программа выдаст совсем не ту строку которую нужно.

Перейдем к делу.

Чтобы найти незакрытую скобку, я использовал это: (не знаю как назвать)

#error abc 
Если в коде ввести «это», компилятор выдаст ошибку. Опишу поподробнее.

Например незакрытая скобка находится на строке номер 5612. Если ввести #error abc дальше строки 5612, например 6719, то компилятор так же вылетит не выдав никаких ошибок, а если ввести #error abc  до строки 5612 например 3118, то компилятор выдаст ошибку «(3118) : fatal error 111: user error: abc». Думаю теперь вы поняли принцип поиска незакрытой скобки.

Я делал так. С начало ввел  #error abc в середину мода, компилятор выдал ошибку «(3118) : fatal error 111: user error: abc». Далее ниже, и еще ниже. Я делал это до тех пор, пока компилятор не вылетел. И наконец-то я нашел незакрытую скобку.

Удачи Вам в поиске незакрытой скобки! 

Автор минуала я, DimanJeans!

Потерял скобки, не могу найти.

В задаче кажется потерял скобки, но не уверен, что даже ход решения верный — вроде как написал все необходимое, но в конце ругался на закрытие метода и синтаксическую белеберду.
В какую сторону сейчас смотреть?

package com.javarush.task.pro.task10.task1010;

import java.util.Objects;

/*
Два айфона
*/

public class Iphone {
private String model;
private String color;
private int price;

public Iphone(String model, String color, int price) {
this.model = model;
this.color = color;
this.price = price;
}

@Override
public boolean equals(Object o)
{
if (o == null)
return false;
}
Iphone iphone = (Iphone) o;
{
return this.price == iphone.price;
}
if (color == null)
{
if (iphone.color !=null)
{
return false;
}
}
else
if (!color.equals(iphone.color))
{
return false;
}
if (model == null)
{
if (iphone.model !=null)
{
return false;
}
}
else
if (!model.equals(iphone.model))
{
return false;
}
return true;
}
public static void main(String[] args) {
Iphone iphone1 = new Iphone(«X», «Black», 999);
Iphone iphone2 = new Iphone(«X», «Black», 999);

System.out.println(iphone1.equals(iphone2));
}

}

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Если вы пропустили где-то скобку (не закрыли), то pawn выдаст 26 ошибок на функции, которые в моде объявлены. 

Если вы поставили лишнюю скобку, pawn вылетит.

Благодаря этому уроку вы сможете найти пропущенную скобку. 

1) Скачиваем эту программу. И открываем ее:

rAw-LC-Vg7w.jpg

2) Кликаем «Browse» и указываем путь до .pwn файла.

3) Нажимаем «Start». 

4) После, программа вам выдаст кол-во открытых и закрытых скобок. Эти числа должны совпадать. Если же нет, вы где-то не закрыли, или не открыли скобку. Также, программа выдаст строку, в которой скобка не закрыта / не открыта. 

kLr6dc3TRJU.jpg

Автор: Evqeniy

Работоспособность данного метода не проверена. В случае обнаружения неисправности, пишите в теме.

На этом все!

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти годовую сумму дивидендов
  • Как в кисловодске найти долину роз
  • Как составить фуд букет
  • Как найти скорость лодки после выстрела
  • Как составить журнал полученных счетов фактур

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии