2015-09-20 2 views
0

Я пытаюсь изучить Java через Hackerrank, и задача, над которой я работаю, в настоящее время принимает int, double и string и печатает их на отдельных строках в обратном порядке, но Я не смог получить строку для печати.System.out.println не работает для строки

import java.util.Scanner; 

public class Solution { 

    public static void main(String[] args) { 
      Scanner sc=new Scanner(System.in); 
      int x=sc.nextInt(); 
      double y=sc.nextDouble(); 
      String s=sc.nextLine(); 

      System.out.println("String: "+s); 
      System.out.println("Double: "+y); 
      System.out.println("Int: "+x); 
     } 
    } 

вход является:

42 
3.1415 
Welcome to Hackerrank Java tutorials! 

И выход:

String: 
Double: 3.1415 
Int: 42 

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

+0

Связанный ответ: http://stackoverflow.com/questions/19077908/beginner-trying-to-program-a-simple-calculator/19077970#19077970 – Nayuki

+0

Связанный ответ: http://stackoverflow.com/questions/18163518/while-loop-executeutes-only-once/18163608 # 18163608 – Nayuki

ответ

2

Изменение первой части кода для этого:

 Scanner sc = new Scanner(System.in); 
     int x = sc.nextInt(); 
     double y = sc.nextDouble(); 
     sc.nextLine(); // Discard rest of current line 
     String s = sc.nextLine(); 

java.util.Scanner Путь разделяет вход в номера или линии немного странно.

+0

Он работает! Почему это необходимо только для строки, а не для других? – Xochozomatli

-1

sc.nextLine(); вместо этого следует sc.next();

+0

Нет 'nextln()', а 'next()' не решает проблему. – Nayuki

+0

.next() отлично работает за то, что они пытаются сделать. Он вернет следующий токен, введенный как строка. – Beryllium

+0

Что делать, если строка строки содержит пробелы? – Nayuki

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