Чтобы избежать этой проблемы, используйте nextLine();
сразу после nextInt();
, поскольку это помогает очистить буфер. Когда вы нажимаете ENTER
, nextInt();
не захватывает новую строку и, следовательно, позже пропускает код Scanner
.
Scanner scanner = new Scanner(System.in);
int option = scanner.nextInt();
scanner.nextLine(); //clearing the buffer
Вы можете попробовать любой формат или prettyNum, но обе функции возвращают вектор символов. Я использовал бы это только для печати.
> prettyNum(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
> format(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
EDIT: Как говорит Майкл Чирико в комментарии:
Имейте в виду, что у них есть побочный эффект заполнения напечатанные строки с пробелом, например:
> prettyNum(c(123,1234),big.mark=",")
[1] " 123" "1,234"
Добавьте trim=TRUE
в format
или preserve.width="none"
в prettyNum
, чтобы предотвратить это:
> prettyNum(c(123,1234),big.mark=",", preserve.width="none")
[1] "123" "1,234"
> format(c(123,1234),big.mark=",", trim=TRUE)
[1] "123" "1,234"
См. ?format
:
> format(1e6, big.mark=",", scientific=FALSE)
[1] "1,000,000"
>
Остальные ответы опубликованы, очевидно, работают, но я всегда использовал
library(scales)
comma_format()(1000000)