Как санкционировать, что контент цепи текста - число, превосходящее 0?

Я не знаю, как делать следующее:

Я нуждаюсь в том, чтобы санкционировать эти 3 данных:

String Equiv1="";
String Equiv2="";
String equivalencia1;

У меня есть сомнение с equivalencia1 дело в том, что это должен быть число, превосходящее 0. У меня есть этот код:

public int probarEquiv1 (){
    Equiv1 =ConversorNou.PrimeraDivisaTXT.getText();
    Equiv2 = ConversorNou.SegundaDivisaTXT.getText();
    equivalencia1 = ConversorNou.EquivalenciaTXT.getCharCount();
    if(Equiv1.equalsIgnoreCase("Euro")&& Equiv2.equalsIgnoreCase("Dolar")&& ......... ){
        return 1;

    }
    else{
        return 0;
    }

Пока я санкционировал, что Equiv1 представьте "Euro", Equiv2 представьте "Dolar", но: как я могу способствовать тому, чтобы он также проверил, что equivalencia1 будьте превосходящим 0?

Есть какой-то более чистый способ это делать?

А именно, моя идея состояла в том, чтобы делать один if-else чтобы делать больше дополнительных условий. Например, что Equiv1 в часть "Euro" также будьте правилен, если я помещаю "Dolar".

2
задан 09.04.2016, 19:07
3 ответа

Одна opciГіn чистильщик сапог состоит в том, чтобы пробовать обращать цепь в один nГєmero. Я принимаю, что он был nГєmero, смоги соглашаться десятичные, из-за чего не serГ - в правильный не использовать ни Integer ни Long ни сходные для нее conversiГіn. Также, так как ты будешь реализовывать операции на этом nГєmero, ты convendrГ, - чтобы использовать Вашу стоимость после того, как это конвертировать. Лучшая opciГіn для этого случая состоит в том, чтобы конвертировать nГєmero BigDecimal:

try {
    //crear la instancia de BigDecimal
    BigDecimal monto = new BigDecimal(equivalencia1);
    //si la instancia pudo ser creada, el texto es un número válido
    //caso contrario, se lanza la excepción NumberFormatException
    //validar que el número es mayor a 0.
    if (monto.compareTo(BigDecimal.ZERO) <= 0) {
        //resto de tu código para calcular la equivalencia
        //...
    } else {
        //el número ingresado es menor o igual a 0
    }
} catch (NumberFormatException e) {
    //mostrar un mensaje de error al usuario indicando que
    //no ha ingresado un número correcto
}
4
ответ дан 24.11.2019, 14:37
  • 1
    @MontseMkd ты можешь использовать этот c и # 243; я говорю, чтобы добавлять твою часть validaci и # 243; n. C и # 243; я говорю, что представленный в ответах он не является одиноким для того, чтобы ты это скопировал, прикрепил и функционировал м и # 225; gicamente. С этим я хочу сказать, что, если ты приспосабливаешь c и # 243; я говорю представленный aqu и # 237; как часть твоего validaci и # 243; n, это, включая твои настоящие утверждения, очень возможно, что оно функционирует. Adem и # 225; s, твой вопрос фокусируется в c и # 243; mo возвышать validaci и # 243; n в особенности, не в c и # 243; mo иметь все утверждения функционируя правильно. –  09.04.2016, 19:42
  • 2
    @MontseMkd я верю в то, что быть и # 237; в лучше скажи себе и # 241; или в твоем aplicaci и # 243; n для пользователя, так и для твоих утверждений как, если, вместо которого пользователь ввел в компьютер валюту как цепь текста, смог выбирать стоимость списка desplegable эксперт и # 237; только стоившие стоимость отборных элементов и ты уберегаешься много проблем validaci и # 243; n и содержание. –  09.04.2016, 19:44
  • 3
    @MontseMkd я понимаю. Пожалуйста имей в виду, что у нас лекторат нет шара м и # 225; gica стекла, чтобы знать то, за чем оно не последует ни в Ваших особенных атмосферах ни контексте. Осветлять все эти детали в момент писания вопроса облегчает comprensi и # 243; n не только проблемы а tambi и # 233; n контекста. –  09.04.2016, 19:47
  • 4
    @MontseMkd этот c и # 243; я говорю, что он достигает, так как он служит для того, чтобы санкционировать, если текст: 1) один n и # 250; морской окунь, 2) один n и # 250; морской окунь, превосходящий 0. Тот факт, что ты это смог, или не понимать, уже он не зависит от м и # 237;. –  09.04.2016, 19:48
  • 5
    В этом soluci и # 243; n - все противоположность: прими так целую стоимость как десятичные. Помни, что они n и # 250; простые целые числа - в действительности подмножество реальной стоимости, и BigDecimal выносит все виды n и # 250; морские окуни. Включая, BigDecimal уже est и # 225; готовившийся к для того, чтобы работать с большим количеством целых и десятичных, (в teor и # 237; a) не est и # 225; я затрагиваю в overflows. –  09.04.2016, 19:51

Правильно утверждение как она ты комментируешь для целой стоимости, что он превосходящий 0, просто добавь в твоем утверждении, которое он проверяет:

equivalencia1> 0

он остался бы:

if(Equiv1.equalsIgnoreCase("Euro")&& Equiv2.equalsIgnoreCase("Dolar")&& equivalencia1 > 0 ){
    return 1;
}
else{
    return 0;
}

Он был бы более быстрым для твоего кода добавлять это в том же утверждении, чем иметь 3 утверждения.

даже ты можешь менять твой метод для того, чтобы ты получил стоимость boleano истинный, если выполняются 3 условия:

public boolean probarEquiv1 (){
    Equiv1 =ConversorNou.PrimeraDivisaTXT.getText();
    Equiv2 = ConversorNou.SegundaDivisaTXT.getText();
    equivalencia1 = ConversorNou.EquivalenciaTXT.getCharCount();
    if(Equiv1.equalsIgnoreCase("Euro")&& Equiv2.equalsIgnoreCase("Dolar")&& equivalencia1 > 0){
        return true;
    }
    else{
        return false;
    }

ok ты был должен определять, что equivalencia1 было бы нужно оценивать ранее, так как он происходит оригинально от стоимости String:

используя этот метод:

 private static int obtieneValorNumerico(String cadena){
            try {
               return  Integer.parseInt(cadena); //convierte el string a int.
            } catch (NumberFormatException nfe){
                return 0; // no es numerico define 0 por default.
            }
}

возможно оценивать, таким образом:

    if ( Equiv1.equalsIgnoreCase("Dolar")&& Equiv2.equalsIgnoreCase("Euro")&& obtieneValorNumerico(equivalencia1)>0){
        return 1;               
        }else{
        return 0;
}
2
ответ дан 24.11.2019, 14:37
  • 1
    вот то, что hab и # 237; в факт, но он дает мне ошибку...: S я не понимаю мотив. Я делаю ему return 1, из-за которого я это соединяю в другом месте программы!;) – Montse Mkd 09.04.2016, 17:35
  • 2
    Я помещаю в Equivalencia1-1 и он дает мне true. Я помещаю в Equivalencia1 букву k и он дает мне true. – Montse Mkd 09.04.2016, 17:36
  • 3
    А именно то, что делает Эквивалентность > 0 состоит в том, что каждый раз, когда он поместил информацию в это поле ввода выйдет True... Мне нужно, чтобы я случился, что это ЧИСЛО, и, что он положительный. – Montse Mkd 09.04.2016, 17:36
  • 4
    Я не думаю, что все общие суммы - целая стоимость только. –  09.04.2016, 19:20
  • 5
    @MontseMkd я собираю = стоимость денег, cash, наличные деньги, серебро, и т.д. –  09.04.2016, 19:44

Решенный!

не, если это лучшая форма.

import javax.print.attribute.standard.Copies;

public class DatosUser {
public DatosUser(){

}
    String Equiv1="";
    String Equiv2="";
    String equivalencia1="";

    public int probarEquiv1 (){
    Equiv1 =ConversorNou.PrimeraDivisaTXT.getText();
    Equiv2 = ConversorNou.SegundaDivisaTXT.getText();
    equivalencia1 = ConversorNou.EquivalenciaTXT.getText();
    if(Equiv1.equalsIgnoreCase("Euro")&& Equiv2.equalsIgnoreCase("Dolar")&& DatosUser.esDecimal1(equivalencia1)){
        return 1;
    }
    else if ( Equiv1.equalsIgnoreCase("Dolar")&& Equiv2.equalsIgnoreCase("Euro")&& DatosUser.isNumeric(equivalencia1)){
    return 1;               
    }
    else{
        return 0;
    }

}

     private static boolean isNumeric(String cadena){
            try {
                Integer.parseInt(cadena);
                return true;
            } catch (NumberFormatException nfe){
                return false;
            }}


     public static boolean esDecimal1(String cad)
     {
     boolean hayPunto=false;
     StringBuffer parteEntera = new StringBuffer();
     StringBuffer parteDecimal = new StringBuffer();
     int i=0, posicionDelPunto;

     for( i=0;i<cad.length(); i++ )
     if ( cad.charAt(i) == '.')                          //Detectar si hay un punto decimal en la cadena
     hayPunto=true;
     if(hayPunto)                                            //Si hay punto guardar la posicion donde se encuentra el carater punto
     posicionDelPunto=cad.indexOf('.');                  //(si la cadena tiene varios puntos, detecta donde esta el primero).
     else
     return false;                                       //Si no hay punto; no es decimal

     if( posicionDelPunto == cad.length()-1 || posicionDelPunto== 0)    //Si el punto esta al final o al principio no es un decimal
     return false;

     for( i=0;i<posicionDelPunto; i++ )
     parteEntera.append(cad.charAt(i)) ;                 //Guardar la parte entera en una variable

     for(i = 0; i<parteEntera.length(); i++)
     if( ! Character.isDigit(parteEntera.charAt(i)) )    //Si alguno de los caracteres de la parte entera no son digitos no es decimal
     return false;

     for( i=posicionDelPunto+1;i<cad.length(); i++ )
     parteDecimal.append(cad.charAt(i));                 //Guardar la parte decimal en una variable

     for(i = 0; i<parteDecimal.length(); i++)
     if( ! Character.isDigit(parteDecimal.charAt(i)) )   //Si alguno de los caracteres de la parte decimal no es un digito no es decimal
     return false;                                   //Incluye el caso en el que la cadena tenga dos o mas puntos

     return true;                                            //Si paso todas las pruebas anteriores, la cadena es un Numero decimal
     }


     public boolean esDecimal(String cad)
     {
     try
     {
       Double.parseDouble(cad);
       return true;
     }
     catch(NumberFormatException nfe)
     {
       return false;
     }




    }
}
-2
ответ дан 24.11.2019, 14:37
  • 1
    У этого ответа нет ning и # 250; n чувство. В вопросе ты показываешь, что equivalencia1 - типа int и сейчас в этом ответе м и # 225; gicamente он изменил Ваш тип в String. Пожалуйста издай твой вопрос, чтобы отражать твоя реальная проблема и мочь решать это. Имей в виду, что твои вопросы и ответы должны помогать не только тебе а в будущий лекторат в сообществе. –  09.04.2016, 19:06
  • 2
    @Elenasys проблема est и # 225; в типе информации. Как кажется, вопрос - c и # 243; mo подтверждать, что цепи текста один n и # 250; морской окунь, превосходящий 0. –  09.04.2016, 19:07
  • 3
    он не создал необходимо if else if else несмотря на то, что оценил все однажды ты можешь возвращать 1 или 0 проверь мой ответ Montse.:) – Jorgesys♦ 09.04.2016, 19:07
  • 4
    Я комментирую вам, должен оценивать 3 вещи. – Montse Mkd 09.04.2016, 19:33
  • 5
    1. Equiv1 (это string, который был бы Евро или Долларом) 2. Equiv2 (это string, который был бы Евро или Долларом, но который не повторял бы с Equiv1) 3. Equivalencia1 - int (а именно пользователь входить и # 225; если, или если число, которое должно быть больше, чем 0 и с десятичными. pod и # 233; is помогать мне? – Montse Mkd 09.04.2016, 19:34