2015-01-21 2 views
0

Попытка взять оставшуюся часть двух значений и установить ее равной переменной intRem, которую я буду называть позже в своей программе. Я получаю ошибку «плохие типы операндов для двоичного оператора«% ». Вот мой код:Расчет остатков Java

// Import a buffered reader to read user input below 
BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); 
String inputValues1; 

// User enters 4 integer values here 
System.out.println("Enter 4 integer values"); 
inputValues1 = input.readLine(); 
String[] intValues = inputValues1.split("\\s+"); 

int intRem = ((intValues[0] + intValues[2]) % (intValues[1] + intValues[3])); 

System.out.println(intRem); 

Как я могу решить эту проблему, чтобы распечатать переменной intRem в конце? Я получаю ошибку с остатком знак как-то ....

+1

[он действительно работает] (http://ideone.com/4FDGL6). можете ли вы добавить еще какой-нибудь код? –

+0

Возможно, ваша ошибка связана с этой строкой кода. – user3437460

+0

@MohammadFaisal есть кодировка для значения –

ответ

1

Убедитесь, что все ваши intValues элементы массива являются int и вы случайно не отбрасывать/разобрать их на другие типы данных, как String перед выполнением расчета %.

Как я и подозревал. Все ваши intValues ​​являются String. Перед выполнением вычислений вам необходимо убедиться, что они являются int.

ли это:

int intRem = ((Integer.parseInt(intValues[0]) + Integer.parseInt(intValues[2])) % (Integer.parseInt(intValues[1]) + Integer.parseInt(intValues[3]))); 

Над коды будут конвертировать все ваши String переменные int.

+0

Спасибо, я тупо должен был это понять –

+0

@MarcusBurkhart Добро пожаловать. Все совершают ошибки. Хорошо. ;) – user3437460

0

Он отлично работает, проверьте & запустить код

ценам ниже
//package com.nawab.standalone; 

public class Main 
{ 
/** 
* @param args 
*/ 
public static void main(String[] args) 
{ 
    int intValues[]=new int[]{0,1,2,3}; 

    int intRem = ((intValues[0] + intValues[2]) % (intValues[1] + intValues[3])); 
    System.out.println("hi:"+intRem); 
    } 
} 
0

Проблема является

enter image description here

, потому что вы используете

String[] intValues 

вместо этого, как предполагается, be

int[] intValues 

или вы должны разобрать каждый элемент массива до int как Integer.parseInt(intValues[0]).

int intRem = ((Integer.parseInt(intValues[0]) + 
       Integer.parseInt(intValues[2])) % 
       (Integer.parseInt(intValues[1]) + 
       Integer.parseInt(intValues[3]))); 
+0

Это не сработает. Вы смотрите на его коды. Он использует метод string.split(), поэтому он использует массив String. – user3437460

+0

Я предлагаю ему не использовать 'String []'. он должен хранить его в 'int []', или ему нужно будет анализировать их каждый раз, когда он их использует. –

0

От JLS 15.17.3. Remainder Operator %

В C и C++, оператор остатка принимает только целые операнды, но на языке программирования Java, он также принимает числа с плавающей точкой.

Но в вашей программе вы передаете строку, которая не так. Ваш следующий код:

int intRem = ((Integer.parseInt(intValues[0]) + Integer.parseInt(intValues[2])) % (Integer.parseInt(intValues[1]) + Integer.parseInt(intValues[3]))); 
Смежные вопросы