Calculando fatorial em Android ( Hello World )

Olá pessoal,

   Acho que alguns alunos e amigos mais próximos tinham ouvido e com certeza percebido a minha empolgação com desenvolvimento mobile e, principalmente a plataforma Android, pois bem, diante de tamanha onda de Tablets e SmartPhones que o mercado tem nos proporcionado, bem que tava na hora de mostrar algo mais divertido aqui no blog ;-).
    Aproveitei o tempinho livre e resolvi fazer um “Hello World” em Android, na verdade não é bemmmmm um Hello World clássico, é uma aplicação que calcula o fatorial de um numero inteiro positivo usando recursividade e o exibe em um toast.
     Essa aplicação foi construída usando a plataforma 3.1, conhecida como HoneyComb. Primeiramente usei um LinearLayout para dispor os diversos componentes(ImageView, TextView, EditText e etc.) de forma vertifcal, depois adicionei um evento do tipo “OnClick” que aciona automaticamente o método calcularFatorial dentro da Activity e por ultimo chamo o método showToastMessage que cria um objeto Toast e o exibe por alguns instantes na tela, criando um efeito bem interessante.
Código do Layout


<linearlayout
    android:layout_width=”fill_parent”
    android:layout_height=”fill_parent”
    android:gravity=”center_horizontal”
    android:orientation=”vertical” android:background=”#FFFFFF” >


    <imageview</imageview
        android:id=”@+id/imageView2″
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:layout_gravity=”left”
        android:src=”@drawable/androidleaning” />


    <textview</textview
        android:id=”@+id/textView1″
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:text=”Fatorial”
        android:textSize=”15pt”
        android:textAppearance=”?android:attr/textAppearanceLarge” />


    <textview</textview
        android:id=”@+id/textView2″
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:text=”@string/app.introduction” />


    <textview</textview
        android:id=”@+id/textView3″
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:text=”@string/app.definicao” />


    <imageview</imageview
        android:id=”@+id/imageView1″
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:src=”@drawable/fatorial” />


    <textview</textview
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:layout_gravity=”left”
        android:text=”@string/form.titulo”
        android:textSize=”8pt” />


    <edittext</edittext
        android:id=”@+id/etValor”
        android:layout_width=”match_parent”
        android:layout_height=”wrap_content”
        android:inputType=”number” >


       
   


    <button</button
        android:id=”@+id/btCalcular”
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content”
        android:text=”@string/button.label” android:onClick=”calcularFatorial” />


Código da Activity


package com.blogspot.thecodingoflife.android;


import java.math.BigInteger;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;


/**
 * 
 * Activity que calcula um determinado fatorial…
 * 
 * @author Natanael Fonseca
 *
 */
public class FirstAppActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.main);
        
    }
    


    public void calcularFatorial(View view){
   
    EditText edText = (EditText) this.findViewById( R.id.etValor );
   
    long n = Integer.parseInt( edText.getText().toString() );
   
    showToastMessage(“O Fatorial deste número é : ” + fatorial( BigInteger.valueOf(  n  ) )  );
   
    }
    
    private BigInteger fatorial(BigInteger n ){
   
    if( n.compareTo( BigInteger.ONE ) <= 0 ){
    return BigInteger.ONE;
    }else{
    return n.multiply( fatorial( n.subtract( BigInteger.ONE )  ));
    }
   
    }
    
    
    //Exibe um ToastMessage por um curto periodo de tempo
    private void showToastMessage(String msg){


        Toast toast = Toast.makeText(this, msg, Toast.LENGTH_LONG );
        toast.show();


    }
    
}

Resultado Final

App Roando no Galaxy Tab 10.1


Download do Projeto

Baixe aqui o projeto ! Para rodar, basta importar no eclipse e, lembrando é claro que você precisará ter o ADT como plugin.

Abrcs.
Natanael Fonseca