Já vimos que Java tem tipos diferentes de variáveis e objetos.
Por exemplo, se fizermos a conta 2+3 teremos resultado 5. Mas se fizermos a conta "2"+"3" teremos resultado "23".
Por que isso acontece? Porque 2 é o valor do tipo int (número inteiro) 2, que se somado com 3 teremos 5.
Mas "2" é uma variável do tipo String que se somarmos com "3" ele irá concatenar as duas palavras resultado na palavra "23". Assim como "Hello" + "World" resultará em "HelloWorld".
Então para fazermos operações matemáticas com a entrada do usuário, que sempre será uma String, precisamos aprender a transformar uma String em um int. O nome desta transformação é parse.
Vamos fazer um programa que recebe dois números e exibe a soma, subtração, multiplicação e a divisão.
xml Para a parte do xml copie o código abaixo.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/numero1"
android:layout_width="180dp"
android:layout_height="64dp"
android:hint="Numero 1"
android:textSize="32dp"
android:inputType="number"
/>
<EditText
android:id="@+id/numero2"
android:layout_width="180dp"
android:layout_height="64dp"
android:hint="Numero 2"
android:textSize="32dp"
android:inputType="number"
/>
</LinearLayout>
<Button
android:id="@+id/botao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Operação"
android:textSize="32dp"
/>
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+: "
android:textSize="32dp"
android:fontFamily="monospace"
/>
<TextView
android:id="@+id/saidaSoma"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Soma"
android:textSize="32dp"
android:fontFamily="monospace"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-: "
android:textSize="32dp"
android:fontFamily="monospace"
/>
<TextView
android:id="@+id/saidaSub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subtração"
android:textSize="32dp"
android:fontFamily="monospace"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*: "
android:textSize="32dp"
android:fontFamily="monospace"
/>
<TextView
android:id="@+id/saidaMulti"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Multiplicação"
android:textSize="32dp"
android:fontFamily="monospace"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/: "
android:textSize="32dp"
android:fontFamily="monospace"
/>
<TextView
android:id="@+id/saidaDiv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Divisão"
android:textSize="32dp"
android:fontFamily="monospace"
/>
</TableRow>
</TableLayout>
</LinearLayout>
Temos novidades neste código xml:
Nos elementos EditText que recebem números, colocamos o parâmetro android:inputType="number", que usa um teclado numérico quando o usuário for colocar a entrada. Outros tipos de entrada podems ser visto aqui
Para organizar a saída, e deixar tudo alinhado, usamos o layout TableLayout, e em cada linha deste layout usamos TableRow
Para ficar ainda mais alinhado, incluímos o parâmetro android:fontFamily="monospace" nos textos de saída para deixar os números da saída com a fonte monospace. Esta fonte deixa todos os characteres com a mesma largura, e ajuda o texto da linha de uma tabela a ficar alinhado com as outras linhas.
java Quase tudo no código java já vimos em aulas anteriores:
package com.viniciusdenovaes.meuapptesteunip;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
/*
* Aqui teremos a definicao das variaveis
* */
EditText inNum1;
EditText inNum2;
Button botao;
TextView outSom;
TextView outSub;
TextView outMul;
TextView outDiv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
/*
* Aqui teremos os valores de cada variavel
* */
inNum1 = findViewById(R.id.numero1);
inNum2 = findViewById(R.id.numero2);
botao = findViewById(R.id.botao);
outSom = findViewById(R.id.saidaSoma);
outSub = findViewById(R.id.saidaSub);
outMul = findViewById(R.id.saidaMulti);
outDiv = findViewById(R.id.saidaDiv);
/*
* Aqui teremos as funcionalidades
* */
botao.setOnClickListener(view -> {
String textoN1 = inNum1.getText().toString();
String textoN2 = inNum2.getText().toString();
// transformamos o text em um numero inteiro
Integer numero1 = Integer.parseInt(textoN1);
Integer numero2 = Integer.parseInt(textoN2);
// fazemos as operacoes com numeros
Integer resSom = numero1 + numero2;
Integer resSub = numero1 - numero2;
Integer resMul = numero1 * numero2;
Integer resDiv = numero1 / numero2;
// fazemos a operacao de volta para transformar o numero em string
String texSom = resSom.toString();
String texSub = resSub.toString();
String texMul = resMul.toString();
String texDiv = resDiv.toString();
outSom.setText(texSom);
outSub.setText(texSub);
outMul.setText(texMul);
outDiv.setText(texDiv);
});
}
}
java Temos novidades neste código java:
String em Integer Usamos o comando Integer numero1 = Integer.parseInt(textoN1); para transformar o texto da entrada em um número.
Integer em String Usamos o comando String texSom = resSom.toString(); para transformar o resultado da operação em um texto.
Integer ao invés de int Podemos usar int ou Integer para usar números inteiros. Aqui usamos Integer para usar o método toString() que ele fornece. Este método transforma um número em String.
Abaixo podemos ver o resultado em operar dois números inteiros

Você percebeu que a divisão de 9 por 2 deu resultado 4? Isto acontece por que quando operamos um número inteiro por outro inteiro o resultado deve ser um inteiro! Isto faz com que a parte decimal do resultado 9/2=4.5 foi jogada fora.
Para consertar isto precisamos usar um número real no lugar de um número inteiro.
Faremos isso no próximo tutorial...