2015-10-21 2 views
-4

У меня есть этот кодSplit Строка Java Калькулятор

ошибка находится в пределах, если заявления о -, * и/операции «Оператор/не определен для типа аргумента (ов) java.lang.String, Java. lang.String "может кто-нибудь помочь

+7

Что вы ожидаете, когда попытаетесь ** разделите строку ** и почему? В более общем плане, что вы ожидаете, когда выполняете арифметические операции над строкой и почему? Я также мог бы рекомендовать выполнить беглый поиск Google для вашей ошибки, чтобы узнать, почему это происходит и как это исправить. – tnw

+0

Вам нужно будет разобрать строку, чтобы получить номер. Вероятно, вы захотите использовать что-то вроде 'int x = Integer.parseInt (parts [0]);' –

+0

Вы, вероятно, хотите проанализировать две другие строки в виде чисел. –

ответ

0

Вам необходимо разобрать каждую деталь, чтобы выполнить математическую операцию над ними. Вы не можете выполнять такие операции над строками (но вы можете объединить строки с «+», но не суммой). Что-то вроде этого:

import java.util.Scanner; 

public class Calculator {  
    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in) ; 
     System.out.println("Enter your two numbers and the operation with spaces between e.g 8 9 -"); 

     String calculation=scan.nextLine(); 

     String [] parts = calculation.split(" "); 

     int part1 = Integer.parseInt(parts[0]); 
     int part2 = Integer.parseInt(parts[1]); 

     int answer; 
     String operation = parts[2]; 
     switch (operation) { 
      case "+": 
       answer = part1 + part2; 
       break; 
      case "-": 
       answer = part1 - part2; 
       break; 
      case "*": 
       answer = part1 * part2; 
       break; 
      case "/": 
       answer = part1/part2; 
       break; 
      default: 
       throw new IllegalStateException("Incorrect operation: " + operation); 
     } 

     String ans = String.valueOf(answer); 
     System.out.println(ans); 
    }  
} 

Если вы хотите напечатать неправильный символ операции, вам необходимо изменить программу. Прежде всего нам нужно инициализировать целое число переменной переменной «0», и вам нужно создать новую логическую переменную, которая будет указывать правильность операции.

import java.util.Scanner; 

public class Calculator { 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in) ; 
     System.out.println("Enter your two numbers and the operation with spaces between e.g 8 9 -"); 

     String calculation=scan.nextLine(); 

     String [] parts = calculation.split(" "); 

     int part1 = Integer.parseInt(parts[0]); 
     int part2 = Integer.parseInt(parts[1]); 

     int answer = 0; 
     boolean incorrectOperation = false; 
     String operation = parts[2]; 
     switch (operation) { 
      case "+": 
       answer = part1 + part2; 
       break; 
      case "-": 
       answer = part1 - part2; 
       break; 
      case "*": 
       answer = part1 * part2; 
       break; 
      case "/": 
       answer = part1/part2; 
       break; 
      default: 
       incorrectOperation = true; 
     } 

     String ans; 
     if(incorrectOperation) { 
      ans = "Incorrect operation: " + operation; 
     } else { 
      ans = String.valueOf(answer); 
     } 

     System.out.println(ans); 
    } 
} 
+0

, который отлично работает! есть ли способ показать ошибку «Неверная операция», используя также «System.out.println»? – zrsecret

+1

Не используйте целые числа для деления или арифметики вообще. Это должно использовать «Двойные» или что-то вроде этого. – tnw

+0

@tnw да, я знаю. Но может быть задача Зака ​​подразумевать использование целых чисел здесь для арифметических операций. –

0

Помимо использования Integer.parse(), почему бы не просто использовать scanner.nextInt() в случае использования?

int part1 = scan.nextInt(); 
    int part2 = scan.nextInt(); 
    String operation = scan.nextLine().trim(); 
+0

Мне нужно, чтобы «throw new» отображался с помощью «System.out.println» – zrsecret

+0

@ZakRatcliffe, вы можете бросать новые, где захотите ... Я уверен, что в вашем учебнике под названием «Java Exception» есть глава, – Bon