2014-12-17 3 views
0

Всякий раз, когда я запускаю x1 (или любой другой int) в виде числа с десятичной точкой (например, 3.7), я получаю сообщение об ошибке ниже. Я попытался выяснить, что вызывает ошибку, но так как я не очень хороший программист на Java (пока :) :) Я не могу понять, как это понять.простой Java дистанционный калькулятор.

Заранее спасибо.

Сообщение об ошибке:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:864) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextInt(Scanner.java:2117) 
    at java.util.Scanner.nextInt(Scanner.java:2076) 
    at MathAvstand.main(MathAvstand.java:12) 

Программа:

import java.lang.Math; 
import java.text.DecimalFormat; 
import java.util.Scanner; 

public class MathAvstand { 

    public static void main(String[] args) { 

     Scanner keyboard = new Scanner(System.in); 

     System.out.print("x1: "); 
     double x1 = keyboard.nextInt(); 

     System.out.print("x2: "); 
     double x2 = keyboard.nextInt(); 

     System.out.print("y1: "); 
     double y1 = keyboard.nextInt(); 

     System.out.print("y2: "); 
     double y2 = keyboard.nextInt(); 

     double a = x1 - x2; 
     double b = y1 - y2; 

     double summa1 = Math.pow(a,2)+ Math.pow(b,2); 

     double avstand = Math.sqrt(summa1); 

     System.out.println("x1: " + x1); 
     System.out.println("x1: " + x2); 
     System.out.println("x1: " + y1); 
     System.out.println("x1: " + y2); 
     System.out.println("Avståndet mellan punkterna är: " + avstand); 


    } 

} 
+0

Подсказка: InputMismatchException может означать несоответствие ввода –

+0

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

ответ

1

Изменить звонки с Scanner.nextInt() в Scanner.nextDouble() как

double x1 = keyboard.nextDouble(); 

int не является числом с плавающей запятой.

+1

Это сработало, спасибо! – Hevar

+0

Извините, мой плохой, используемый. вместо, – Hevar

+0

@Hevar Вы можете посмотреть ['NumberFormat'] (http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html), если вы хотите форматировать десятичные знаки в вашем регионе. –

0

Вы получаете ошибку под названием InputMismatchException, потому что

keyboard.nextInt() 

ищет междунар, но вы передаете его двойной

попробуйте заменить все те, с

keyboard.nextDouble(); 
0

Этот вопрос что вы используете nextInt, а затем вводите двойной.

Попытка:

двойной x1 = keyboard.nextDouble();

0

Вызовите метод next() вместо nextInt(), чтобы исправить его. Вы также можете, как предложили другие, изменить его на nextDouble(), это просто еще одно предложение.

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