2013-08-04 3 views
2

мне нужно написать тестовый класс, который будет делать следующее:Сканер типов входных данных

  • а. Позвольте пользователю ввести целое число и отобразить его.
  • b. Позвольте пользователю ввести значение float и отобразить его.
  • c. Позвольте пользователю ввести свое имя (без пробелов) и отобразить имя как: “Hello <name>, welcome to Scanner!”
  • d. Позвольте пользователю ввести символ и отобразить его.
  • e. Позвольте пользователю ввести любую строку (с пробелами) и отобразить ее.

Мои вопросы, как я могу просто сканировать только на Character и отобразить его? И в №2, как я могу ввести String с пробелами и отобразить его? (буквы «d» и «e»)

Я искал вокруг, но я не могу найти простейшее решение (поскольку я новичок в Java и программировании).

Вот мой код до сих пор:

package aw; 

import java.io.PrintStream; 
import java.util.Scanner; 

public class NewClass1 
{ 
    public static void main(String[] args) 
    { 
     int num; 
     double num2; 
     String name; 
     char c; 
      Scanner sc = new Scanner(System.in); 
      PrintStream ps = new PrintStream(System.out); 

     //for integer 
     System.out.println("Enter a number: "); 
     num = sc.nextInt(); 
     ps.printf("%d\n", num); 

     //for float 
     System.out.println("Enter a float value: "); 
     num2 = sc.nextDouble(); 
     ps.printf("%.2f\n", num2); 

     //for name w/o white space 
     System.out.print("Enter your first name: "); 
     name = sc.next(); 
     ps.printf("Hello %s, welcome to Scanner\n", name); 


     //for character 
     System.out.print("Enter a character: "); 
     c = sc.findWithinHorizon(".", 0).charAt(0); 
     System.out.print(“%c”, c); 

     //for name w/ white space 
     System.out.print("Enter your full name: "); 
     name = sc.nextLine(); 
     System.out.print(“%s”, name); 
    } 
} 

Я надеюсь, что вы можете мне помочь. Благодаря!

ответ

2

Во-первых, нет никакой необходимости, чтобы обернуть System.out в PrintStream, потому что out уже поддерживает форматирование с format() или printf() методами.

Далее вам нужно понять, что при вводе строки данных вы также завершаете ее новой строкой\n. Методы next<Type>() потребляют только <Type> и ничего больше. Таким образом, если звонок next<Type>() может совпадать с \n, вам необходимо пропустить любые дополнительные новые линии\n еще с nextLine().

Вот ваш код с исправлениями:

int num; 
    double num2; 
    String name; 
    char c; 

    Scanner sc = new Scanner(System.in); 

    //for integer 
    System.out.print("Enter a number: "); 
    num = sc.nextInt(); 
    System.out.printf("%d\n", num); 

    //for float 
    System.out.print("Enter a float value: "); 
    num2 = sc.nextDouble(); 
    System.out.printf("%.2f\n", num2); 

    //for name w/o white space 
    System.out.print("Enter your first name: "); 
    name = sc.next(); 
    System.out.printf("Hello %s, welcome to Scanner\n", name); 

    //for character 
    System.out.print("Enter a character: "); 
    c = sc.findWithinHorizon(".", 0).charAt(0); 
    System.out.printf("%c\n", c); 

    sc.nextLine(); // skip 

    //for name w/ white space 
    System.out.print("Enter your full name: "); 
    name = sc.nextLine(); 
    System.out.printf("%s", name); 
0

Используйте это:

//for a single char 
    char Character = sc.findWithinHorizon(".", 0).charAt(0); 

    //for a name with white space 
    System.out.print("Enter your full name: "); 
     String name2 = sc.next(); 
     String surname = sc.next(); 
     System.out.println(name2 + " " + surname); 
+0

при запуске программы, sc.nextLine не позволяет мне сканировать, он заканчивает программу сразу. –

+0

Хорошо, что он пишет? Вероятно, есть сообщение об ошибке. – slanecek

+0

не было никакого сообщения об ошибке .. это выглядит следующим образом Введите символ: а Введите свое полное имя: BUILD УСПЕШНОГО (общее время: 5 секунд) я не был в состоянии напечатать в последнем сканере –

0

Использование Scanner.next(Pattern) и передать Pattern.compile("[A-Za-z0-9]"), чтобы сканер принимает только один символ определен.
Вы можете передать любое регулярное выражение в качестве аргумента и проверить next()
Scanner.next(); следующей строки с пробелами

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