How do I switch between weapons?! PLEASE HELP

Im new to Unity and im trying to make a way for me to switch between a fireball and a Shuriken(ninja star). The switching part works perfectly, but once I press the button it shoots an infinite non-stopping stream of fireballs or Shhuriken. PLEASE HELP! How do I stop the infinite stream of projectiles?

#pragma strict
var shurbullet : Transform;
var fireballbullet : Transform;

var weaponnumber;

function Start () {

}


function Update () 
{
if(weaponnumber == 1){
		var sfire = Instantiate (shurbullet,gameObject.Find("bullet_SpawnPoint").transform.position,Quaternion.identity);
		sfire.rigidbody.AddForce(transform.forward*200);
		}
if(weaponnumber == 2){
		var firebullet = Instantiate (fireballbullet, gameObject.Find("bullet_SpawnPoint").transform.position,Quaternion.identity);
		firebullet.rigidbody.AddForce(transform.forward*500);
		}

//1st weapon
if(Input.GetKeyUp("f")){
		weaponnumber = 1;
	}

//2nd weapon
if(Input.GetKeyUp("2")){
		weaponnumber = 2;
	}
}

Nowhere in your code do you set weaponnumber back to zero. If weaponnumber is 1 or 2, then you fire a projectile. Since there is no way for this variable to every change back to zero, every frame you fire a new projectile. I’d do something like:

function Update () 
{
   //1st weapon
   if(Input.GetKeyUp("f")){
       var sfire = Instantiate (shurbullet,gameObject.Find("bullet_SpawnPoint").transform.position,Quaternion.identity);
       sfire.rigidbody.AddForce(transform.forward*200);
    }
 
   //2nd weapon
   if(Input.GetKeyUp("2")){
       var firebullet = Instantiate (fireballbullet, gameObject.Find("bullet_SpawnPoint").transform.position,Quaternion.identity);
       firebullet.rigidbody.AddForce(transform.forward*500);
    }
}

This way it’s only when you release the key that something gets fired.

move the if else shooting part into a shoot() function that is called when the button was pressed. Otherwise the shooting part is called every frame.

function Update ()
{
//1st weapon
if(Input.GetKeyUp("f")){
   weaponnumber = 1;
   shoot();
}
 
//2nd weapon
if(Input.GetKeyUp("2")){
   weaponnumber = 2;
   shoot();
}

//Alternative methode
//weaponnumber = 0;
}

function shoot()
{
if(weaponnumber == 1){
    var sfire = Instantiate (shurbullet,gameObject.Find("bullet_SpawnPoint").transform.position,Quaternion.identity);
    sfire.rigidbody.AddForce(transform.forward*200);
}
if(weaponnumber == 2){
    var firebullet = Instantiate (fireballbullet, gameObject.Find("bullet_SpawnPoint").transform.position,Quaternion.identity);
    firebullet.rigidbody.AddForce(transform.forward*500);
    }
}

Alternatively you can reset the weaponnumber at the end of each frame to 0, but that is very bad design imo.