operação com inputfield
2 participantes
Página 1 de 1
operação com inputfield
Galera estou tentado fazer uma operação com inputfield mas está dando errado
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class teste2 : MonoBehaviour
{
public Text valor1;
public Text valor2;
public Text Resposta;
string alutra;
string peso;
public void calcular()
{
if (Resposta.text != "")
{
valor2 = valor1.text;
valor1 = valor2.text;
Resposta.text = valor1 / (valor2 * valor2);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class teste2 : MonoBehaviour
{
public Text valor1;
public Text valor2;
public Text Resposta;
string alutra;
string peso;
public void calcular()
{
if (Resposta.text != "")
{
valor2 = valor1.text;
valor1 = valor2.text;
Resposta.text = valor1 / (valor2 * valor2);
}
}
eduardonog30- Avançado
- PONTOS : 2882
REPUTAÇÃO : 5
Respeito as regras :
Re: operação com inputfield
É complicado mensurar o problema sem o erro e o restante do contexto, mas com certeza o erro vem desse trecho:
Vc está tentando realizar operações aritméticas com strings.
Para contornar esse problema, vc pode tentar converter "valor1" e "valor2" para int, ou pode criar duas variáveis ints para armazenar esses valores (que eu acho mais seguro):
- Código:
valor2 = valor1.text;
valor1 = valor2.text;
Resposta.text = valor1 / (valor2 * valor2);
Vc está tentando realizar operações aritméticas com strings.
Para contornar esse problema, vc pode tentar converter "valor1" e "valor2" para int, ou pode criar duas variáveis ints para armazenar esses valores (que eu acho mais seguro):
- Código:
int valor_1 = 0;
int valor_2 = 0;
if(System.Int32.TryParse(valor1.text, out valor_1) &&
System.Int32.TryParse(valor2.text, out valor_2){
Resposta.text = (valor_1 / (Mathf.Pow(valor_2, 2)).ToString();
} else {
Debug.Log("Erro ao converter os valores");
}
Re: operação com inputfield
Então ficaria assim:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class teste2 : MonoBehaviour
{
public Text valor1;
public Text valor2;
public Text Resposta;
public void calcular()
{
int valor_1 = 0;
int valor_2 = 0;
if (System.Int32.TryParse(valor1.text, out valor_1) &&
System.Int32.TryParse(valor2.text, out valor_2)
{
Resposta.text = (valor_1 / (Mathf.Pow(valor_2, 2)).ToString();
}
else
{
Debug.Log("Erro ao converter os valores");
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class teste2 : MonoBehaviour
{
public Text valor1;
public Text valor2;
public Text Resposta;
public void calcular()
{
int valor_1 = 0;
int valor_2 = 0;
if (System.Int32.TryParse(valor1.text, out valor_1) &&
System.Int32.TryParse(valor2.text, out valor_2)
{
Resposta.text = (valor_1 / (Mathf.Pow(valor_2, 2)).ToString();
}
else
{
Debug.Log("Erro ao converter os valores");
}
}
}
eduardonog30- Avançado
- PONTOS : 2882
REPUTAÇÃO : 5
Respeito as regras :
Re: operação com inputfield
Faltaram alguns parênteses, depois que ajustei ficou igual ao abaixo, eu limitei a saída a duas casas decimais após a vírgula, só tenho mais uma dúvida, se eu quisesse usar números com vírgulas nos valores 1 e 2 bastaria eu substituir o System.Int32.TryParse por decimal.TryParse?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class teste2 : MonoBehaviour
{
public Text valor1;
public Text valor2;
public Text Resposta;
public void calcular()
{
int valor_1 = 0;
int valor_2 = 0;
if (System.Int32.TryParse (valor1.text, out valor_1) && System.Int32.TryParse (valor2.text, out valor_2))
{
Resposta.text = (valor_1 / Mathf.Pow (valor_2, 2)).ToString("F2");
}
else
{
Debug.Log("Erro ao converter os valores");
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class teste2 : MonoBehaviour
{
public Text valor1;
public Text valor2;
public Text Resposta;
public void calcular()
{
int valor_1 = 0;
int valor_2 = 0;
if (System.Int32.TryParse (valor1.text, out valor_1) && System.Int32.TryParse (valor2.text, out valor_2))
{
Resposta.text = (valor_1 / Mathf.Pow (valor_2, 2)).ToString("F2");
}
else
{
Debug.Log("Erro ao converter os valores");
}
}
}
eduardonog30- Avançado
- PONTOS : 2882
REPUTAÇÃO : 5
Respeito as regras :
Re: operação com inputfield
eduardonog30 escreveu:Faltaram alguns parênteses, depois que ajustei ficou igual ao abaixo, eu limitei a saída a duas casas decimais após a vírgula e troquei os valores int para float e System.Int32.TryParse por float.TryParse para conseguir colocar número com vírgula
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class teste2 : MonoBehaviour
{
public Text valor1;
public Text valor2;
public Text Resposta;
public void calcular()
{
int valor_1 = 0;
int valor_2 = 0;
if (System.Int32.TryParse (valor1.text, out valor_1) && System.Int32.TryParse (valor2.text, out valor_2))
{
Resposta.text = (valor_1 / Mathf.Pow (valor_2, 2)).ToString("F2");
}
else
{
Debug.Log("Erro ao converter os valores");
}
}
}
eduardonog30- Avançado
- PONTOS : 2882
REPUTAÇÃO : 5
Respeito as regras :
Tópicos semelhantes
» Editar texto selecionado num inputfield?
» Como Passar ou pegar Informação De Um Inputfield
» InputField !?
» Código secreto num inputField...
» Mudar a visiabilidade do inputField
» Como Passar ou pegar Informação De Um Inputfield
» InputField !?
» Código secreto num inputField...
» Mudar a visiabilidade do inputField
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos