2016-02-26 3 views
1

вот мой код:Scan Double не работает с примерки уловом

public static void setPriority(List<Performer> listperformer) 
{ 
    Scanner localsc = new Scanner(System.in); 
    if(listperformer.isEmpty() == true) 
    { 
    System.out.println("- empty -"); 
    return; 
    } 
    else 
    { 
    System.out.println("ID:"); 
    int id = localsc.nextInt(); 
    if(listperformer.size() < id || id < 0) 
    { 
    System.out.println("Invalid input!"); 
    return; 
    } 
    else 
    { 
    double priority = 1.0; 
    try{ 
    System.out.println("Priority:"); 
    priority = localsc.nextDouble(); 
    listperformer.get(id).setPriority(priority); 

    }catch(InputMismatchException e) 
    { 
    System.err.println("Invalid input!"); 
    } 

    } 
    } 

Когда я хочу, чтобы сканировать что-то вроде 2,7 он работает, но если я ставлю вместо запятой точку, это приводит на «Недопустимый вход!». вывод.

+0

Ну, прежде всего я был без, это только попробовать, почему этот код не принимает точку – Johnny

+2

Что локаль? Запятая и точка не означают одно и то же в любом языке. –

+0

нормально, но обычно переменная типа double всегда с точкой, или я не прав? – Johnny

ответ

1

проверить, если вам нужно использовать США локаль

Scanner localsc = new Scanner(System.in); 
localsc.useLocale(Locale.US); 
+0

работает! большое спасибо! – Johnny

+0

@FarazDurrani Вам не должно быть, но он должен быть – Pragnani

+0

Спасибо @PragnaniKinnera –

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