I suspect the confusion is your SetNumber()
function is a constructor. It's a constructor due to it having the same name as the contract.
Constructors run once only during the deployment process and can never run again. That means there's no way to send it a transaction.
Here I just renamed a few things and introduced another function that's ready to receive a message. This contract does what I think you wanted the original to do.
contract Number {
int public number;
// this is the constructor. optionally remove init and get 0 to start.
function Number(int initialize) {
number = initialize;
}
// this function recieves messages and updates the number.
function setNumber(int value) {
number = value;
}
}
Hope it helps.
Edit:
Ajoy pointed out that I might have misunderstood the question.
If you're having difficulty passing value into the constructor itself, it happens during the transaction that deploys the contract, as explained here:
https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial#compile-and-deploy
They have an example of deploying a contract with "supply" passed to the constructor.