Remix - Solidity IDE - ParserError

No se puede compilar la "Subasta de contratos". Obtuve este error para métodos varios.

//Miscellaneous methods: Below methods are used to assist Grading. Please DONOT CHANGE THEM
function getPersonDetails(uint id) public constant returns(uint,uint,address){
    return (bidders[id].remainingTokens,bidders[id].personId,bidders[id].addr); 
}

https://i.stack.imgur.com/igtp1.png

EDITAR

Código completo:

pragma solidity ^0.4.17;

contract Auction {
    // Data
    //Structure to hold details of the item
    struct Item { 
        uint itemId;          // id of the item 
        uint[] itemTokens;    //tokens bid in favor of the item
    }

    //Structure to hold the details of a persons
    struct Person { 
        uint remainingTokens; //tokens remaining with bidder
        uint personId;        //it serves as tokenId as well
        address addr;         //address of the bidder
    }

    mapping(address => Person) tokenDetails; //address to person
    Person [4] bidders;//Array containing 4 person objects

    Item [3] public items;       //Array containing 3 item objects 
    address[3] public winners;   //Array for address of winners 
    address public beneficiary;  //owner of the smart contract
    uint bidderCount=0;          //counter

    //functions
    function Auction() public payable{                     //constructor
        beneficiary = msg.sender;                          //Part 1 Task 1 – 1 line
        uint[] memory emptyArray; 
        items[0] = Item({itemId:0,itemTokens:emptyArray});
        items[1] = Item({itemId:1,itemTokens:emptyArray}); //Part 1 Task 2 – line 1
        items[2] = Item({itemId:2,itemTokens:emptyArray}); //Part 1 Task 2 – line 2
    }

    function register() public payable{
        bidders[bidderCount].personId = bidderCount;
        bidders[bidderCount].addr = addr;                  //Part 1 Task 3 – 1 line
        bidders[bidderCount].remainingTokens = 5;          // only 5 tokens
        tokenDetails[msg.sender]=bidders[bidderCount];
        bidderCount++; 
    }

    function bid(uint _itemId, uint _count) public payable{
        if (tokenDetails[msg.sender].remainingTokens < _count) return; //Part 1 Task 4 – line 1
        if (_itemId > 2) return;                                       //Part 1 Task 4 – line 2
        (tokenDetails[msg.sender].remainingTokens - _count);           //Part 1 Task 5 – 1 line
        bidders[tokenDetails[msg.sender].personId].remainingTokens= tokenDetails[msg.sender].remainingTokens; //updating the same balance in bidders map. 
        Item storage bidItem = items[_itemId]; 
        for(uint i=0; i<_count;i++) { 
            bidItem.itemTokens.push(tokenDetails[msg.sender].personId); 
        }
    }

    function revealWinners() public {
         for (uint id = 0; id < 3; id++) { 
             Item storage currentItem=items[id]; 
             If (currentItem.itemTokens.length != 0);
                 uint randomIndex = (block.number / currentItem.itemTokens.length)% currentItem.itemTokens.length; 
                 uint winnerId = currentItem.itemTokens[randomIndex];
                 return winnerId;                                      //Part 1 Task 6 – 1 line
            }
        }
    }

    //Miscellaneous methods: Below methods are used to assist Grading. Please DONOT CHANGE THEM
    function getPersonDetails(uint id) public constant returns(uint,uint,address){
      return (bidders[id].remainingTokens,bidders[id].personId,bidders[id].addr); 
    }
}
Por favor comparte el resto del código. El problema es probablemente una llave extra en algún lugar por encima de esto.
Me gusta hacer esto, pero no puedo agregar el código porque se permite más de max char. ¿Es posible hacer esto por correo?
¿ Tal vez pruebe pastebin.com ?
Creé una cuenta "DieterNerge". Pero, ¿cómo lo sacas de ahí?
¡Mensaje creado!
Nadie podrá encontrarlo a menos que proporcione un enlace al código.
¡OK entiendo! El enlace: pastebin.com/Zn8vj84m
Necesitas hacer pública la pasta.
Creé uno nuevo - público. pastebin.com/zxFRQgm3
Agregué el código a tu pregunta.

Respuestas (1)

Esta línea:

If (currentItem.itemTokens.length != 0);

debiera ser:

if (currentItem.itemTokens.length != 0) {

(minúsculas iy ifuna llave en lugar de un punto y coma)

¿Puedo hacer una siguiente pregunta? La compilación estuvo bien, pero recibí un registro de advertencias. gas y por eso no puedo hacerlo funcionar. Creé un nuevo pastebin con todos los comentarios del curso. pastebin.com/tDMnvafT ¡Gracias de antemano!
Todas las líneas que edité están marcadas con //Parte 1 - Tarea n - Línea n
Por favor cree una nueva pregunta.