2016-12-10 2 views
2

Я совершенно новый ученик java se, и я прихожу к некоторым проблемам. Код ниже должен быть калькулятором. Это прекрасно работает. Для расчета выхода входной сигнал класса сканера должен вводиться следующим образом:
1: введите 1-й номер - нажмите клавишу ввода на клавиатуре
2: введите футляр + - * или/затем снова нажмите ввод на клавиатуре
3: введите второй номер и снова нажмите клавишу ввода
4: Наконец приходит выходной сигнал

так это выглядит такРезультат ввода/вывода Java

Калькулятор

-

Расчет 1:

Вопрос заключается в том, есть ли способ, чтобы поставить его в один ряд


1. Введите оба номера 2-1 - хит введите на клавиатуре
2. выходные данные показывают, как расчет: 1

public class Calculator { 

    public static void main(String... args) { 

     int num1; 
     int num2; 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Calculator"); 

     num1 = scan.nextInt(); 
     String str = scan.next(); 
     num2 = scan.nextInt(); 

     System.out.print(("Calculation is " + calculate(num1, str, num2))); 
     scan.close(); 

    } 

    private static int calculate(int num1, String str, int num2) { 

     switch (str.charAt(0)) { 
     case '+': 
      return num1 + num2; 
     case '-': 
      return num1 - num2; 
     case '*': 
      return num1 * num2; 
     case '/': 
      return num1/num2; 

     } 
     return calculate(num1, str, num2); 

    } 
} 
+0

Возможный дубликат [Java, читающий несколько ints из одной строки] (http://stackoverflow.com/questions/23506429/java-reading-multiple-ints-from-a-singleline) –

+0

Как я понимаю, это не дубликат. Он хочет, чтобы пользовательский ввод отображался в одной строке. – goto

+0

Вы уже можете это сделать, просто разделите каждую часть пробелом, например '2 - 1'. – Tom

ответ

0

Если вам хотите, чтобы вход пользователя отображался в одной строке, тогда вы можете легко достичь этого, не меняя ни одной строки кода в вашей текущей реализации. Вам просто нужно отделить ваш ввод пробелами.

Таким образом, вместо 2-1, просто использовать 2 - 1

Сканер разбивает свой вклад в лексемы с использованием шаблона разделителя, который по умолчанию соответствует пустому пространству. Полученные маркеры могут быть затем преобразованы в значение различных типов, используя различные методы, следующие ... Scanner Java Documentation

Надежда это помогает!

+0

NazCompile ты был прав –

0

да это возможно, способ сделать это будет использовать строку, чтобы захватить всю операцию затем разбить его в другое приложение part.`public класса {

public static void main(String[] args) { 



    // get the operation from the user 
    Scanner scan = new Scanner(System.in); 

    System.out.print("Enter your operation : "); 

    String operation = scan.nextLine(); 


    // booleans to evaluate to true if a certain sign is use 
    boolean isAddition = operation.contains("+"); 
    boolean isSubstration = operation.contains("-"); 
    boolean isDivision = operation.contains("/"); 
    boolean isMultiplication = operation.contains("*"); 

    if(isAddition){  
     // get result from the function in charge of processing the operation 
     int result = processOperation(operation, '+'); 
     //output the result 
     System.out.println(" = "+result); 
    } 
    if(isSubstration){  
     // get result from the function in charge of processing the operation 
     int result = processOperation(operation, '-'); 
     //output the result 
     System.out.println(" = "+result); 
    } 
    if(isDivision){ 
    // get result from the function in charge of processing the operation 
     int result = processOperation(operation, '/'); 
     //output the result 
     System.out.println(" = "+result); 
    } 
    if(isMultiplication){ 
     // get result from the function in charge of processing the operation 
     int result = processOperation(operation, '*'); 
     //output the result 
     System.out.println(" = "+result); 
    } 

}

частный статический INT processOperation (операция String, символ знака) {

 //remove all the whitespace in the string 
     operation = operation.replaceAll("\\s+", ""); 

     // get the position of the sign operator in the String 
     int signIndex = operation.indexOf(sign); 

     //get the first number from the string which start from index 0 up to signIndex 
     int num1 = Integer.parseInt(operation.substring(0, signIndex)); 

     //get the second number from the string which is start from signIndex 
     int num2 = Integer.parseInt(operation.substring(signIndex+1)); 


     //evaluate the sign in use in order to perfom the appropriate operation 
    if (sign == '+') { 
     return num1 + num2; 
    } else if (sign == '-') { 
     return num1 - num2; 
    } else if (sign == '*') { 
     return num1 * num2; 
    } else { 
     return num1/num2; 
    } 
} 

} `

Смежные вопросы