2016-10-14 4 views
0

Мне нужно создать калькулятор для моего класса Computer Science. Я могу рассчитать двойные значения, если они представляют собой только цифры, такие как 3,4 или 6,8, тогда как другие двойные значения, такие как 64,7 или 6,78, не будут работать из-за того, как я искал строку для удвоений. Мне интересно, есть ли способ найти двойники в строке или нет. Постскриптум Я знаю, что тестирование оператора может быть проще с коммутаторами. Я работаю над этим.Поиск строки с несколькими двойными значениями для одного определенного двойного значения?

public static void main(String[] args){ 
    //Declares my input variables and Scanner variable 
    String firstInput; 
    String secondInput; 
    String userProblem; 
    char operator; 
    //Creates the scanner 
    Scanner userInput = new Scanner(System.in); 

    //Asks for input 
    System.out.println("Please enter a problem you would like to calculate (ex. \"2.0 * 4.3\")"); 
    userProblem = userInput.nextLine(); 

    //Finds the doubles in the string and the operator 
    firstInput = userProblem.substring(0, 3); 
    secondInput = userProblem.substring(6, 9); 
    operator = userProblem.charAt(4); 

    //parses the strings to doubles 
    double firstNumber = Double.parseDouble(firstInput); 
    double secondNumber = Double.parseDouble(secondInput); 

    //Tests for the operator and executes accordingly 
    if(operator == '+'){ 
     System.out.println(firstNumber + secondNumber); 
    } 
    else{ 
     if(operator == '-'){ 
      System.out.println(firstNumber - secondNumber); 
     } 
     else{ 
      if(operator == '*'){ 
       System.out.println(firstNumber * secondNumber); 
      } 
      else{ 
       if(operator == '/'){ 
        System.out.println(firstNumber/secondNumber); 
       } 
       else{ 
        if(operator == '%'){ 
         System.out.println(firstNumber % secondNumber); 
        } 
        else{ 
         System.out.println("You did not input correctly"); 
        } 
       } 
      } 
     } 
    } 
} 

}

+0

Просьба поделиться ожидаемым пользователем. – gba

+1

Подсказка: подстрока, состоящая только из цифр и '.', является кандидатом на число. – Henry

+0

То, что я ищу для людей, является «6.5 * 3.2» именно так. Одно целое число с одним десятичным размещением, затем пробел, затем еще одно целое число с одним десятичным числом. –

ответ

0

Использование ниже фрагмента кода для извлечения два входа и оператора, а также.

String[] tokensVal = userProblem.split("[-+*/%]"); 
firstInput = tokensVal[0].trim(); 
secondInput = tokensVal[1].trim(); 
operator = userProblem.charAt(tokensVal[0].length()); 
+0

Большое вам спасибо! –

+0

Пожалуйста, отметьте это как правильное. Это будет полезно для других зрителей. –