как контролировать пользовательский ввод - PullRequest
0 голосов
/ 16 декабря 2010

моя программа сначала показывает две опции и просит пользователя выбрать один вариант, проблема в том, что моя программа игнорирует ввод сканера и не входит в блок, даже если условие истинно, так в чем проблема я !!!

import java.util.Scanner;

public class TestS {

    public static void main(String[] args) {

        Scanner kb=new Scanner(System.in);
        String s;
        System.out.println("Choose an operation to apply :\n1.Een\n2.De");
        s=kb.nextLine();
        System.out.println(s);
        if(s=="1")
        {
            System.out.print(5454545);
        }

        else if(s=="2")
        {
            System.out.print(2);
        }


    }
}

Ответы [ 3 ]

4 голосов
/ 16 декабря 2010

Вы никогда не должны сравнивать строки, используя ==. Используйте метод .equals (или иногда метод .equalsIgnoreCase):

if(s.equals("1"))
    // ...

Так как вы используете сканер и вам кажется, что для ввода требуются цифры, есть лучший способ:

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        Scanner kb = new Scanner(System.in);

        System.out.println("Choose an operation to apply :\n1.Een\n2.De");

        while (!kb.hasNextInt())
            System.out.println(kb.next() + " is not a number. Try again...");

        int choice = kb.nextInt();
        System.out.println(choice);

        switch (choice) {
        case 1: System.out.print(5454545); break;
        case 2: System.out.print(2); break;
        default: System.out.println("Invalid choice."); break;
        }
    }
}
1 голос
/ 16 декабря 2010

Проблема в операторе равенства.Помните, что == сравнивайте ссылки на память, а не значения объекта.Мы знаем, что у String есть пул String, но в этом случае он не используется.

вместо этого попробуйте использовать .equals () ==

0 голосов
/ 16 декабря 2010

изменить вас, если

if(s == null ? "1" == null : s.equals("1"))
{
    System.out.print(5454545);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...