2013-03-05 6 views
6

Я пытаюсь прочитать строку, а затем перейти в оператор if. Но после того, как у него есть красный первый вход, он просто заканчивается. Я понятия не имею, что это неправильно, и я не могу понять этоСканер не сканирует мой ввод

import java.util.Scanner; 

public class mainen { 

    public static void main(String[] args) { 
     Formler form = new Formler(); 
     Scanner Sscan = new Scanner(System.in); 
     Scanner Dscan = new Scanner(System.in); 
     String input; 
     System.out.println("Formler: Molmassa"); 
     input = Sscan.nextLine(); 

     if(input == "molmassa" || input == "Molmassa"){ 
      double m; 
      double M; 
      System.out.println("Massa: "); m = Dscan.nextDouble(); 
      System.out.println("Molmassa: "); M = Dscan.nextDouble(); 
      System.out.println(form.getMolmassa(m, M)); 
     } 
    } 

} 
+1

Ваши сравнения строк неверны. Вместо этого используйте 'input.equals (« molmassa »)'. – Henrik

ответ

3
if(input == "molmassa" || input == "Molmassa"){} 

Вы должны равняться String объект с equals методом или методом equalsIgnoreCase.

if(input.equalsIgnoreCase("Molmassa")){} 

== используется для примитивной проверки выравнивания.

9

Изменить if заявление:

if(input.equalsIgnoreCase("molmassa")) { } 

Затем он должен работать, как вы ожидаете. Не забывайте всегда сравнивать строки, используя метод equals() или equalsIgnoreCase(). == сравнивает ссылки на объекты, а не фактические значения.

4

Вам нужно заменить равна проверки:

if(input == "molmassa" || input == "Molmassa"){ 

со следующим;

if(input.equals("molmassa") || input.equals("Molmassa")){ 

Первые проверки, если String s являются тот же объект, а второй проверяет, что они то же значение, что и вам нужно здесь.

4

Проблема заключается в вас if изменить состояние его

if(input.equalsIgnoreCase("molmassa)) 

и каждая вещь должна работать нормально. более

Одна вещь, вы не должны иметь отдельный Scanner принять String и double вход вы можете использовать один Scanner объект для обоих входов.

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