Scala Book

Command-Line I/O

Language
Info: JavaScript is currently disabled, code tabs will still work, but preferences will not be remembered.

To get ready to show for loops, if expressions, and other Scala constructs, let’s take a look at how to handle command-line input and output with Scala.

Writing output

As we’ve already shown, you write output to standard out (STDOUT) using println:

println("Hello, world")

That function adds a newline character after your string, so if you don’t want that, just use print instead:

print("Hello without newline")

When needed, you can also write output to standard error (STDERR) like this:

System.err.println("yikes, an error happened")

Because println is so commonly used, there’s no need to import it. The same is true of other commonly-used data types like String, Int, Float, etc.

Reading input

There are several ways to read command-line input, but the easiest way is to use the readLine method in the scala.io.StdIn package. To use it, you need to first import it, like this:

import scala.io.StdIn.readLine

To demonstrate how this works, let’s create a little example. Put this source code in a file named HelloInteractive.scala:

import scala.io.StdIn.readLine
object HelloInteractive extends App {
 print("Enter your first name: ")
 val firstName = readLine()
 print("Enter your last name: ")
 val lastName = readLine()
 println(s"Your name is $firstName $lastName")
}

Then compile it with scalac:

$ scalac HelloInteractive.scala

Then run it with scala:

$ scala HelloInteractive

When you run the program and enter your first and last names at the prompts, the interaction looks like this:

$ scala HelloInteractive
Enter your first name: Alvin
Enter your last name: Alexander
Your name is Alvin Alexander

A note about imports

As you saw in this application, you bring classes and methods into scope in Scala just like you do with Java and other languages, with import statements:

import scala.io.StdIn.readLine

That import statement brings the readLine method into the current scope so you can use it in the application.

Contributors to this page:

Contents

AltStyle によって変換されたページ (->オリジナル) /