開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
Go Systems Programming: Master Linux and Unix system level programming with Go (Mihalis Tsoukalos(著)、Packt Publishing)のChapter 2(Writing Programs in Go)、Exercises 2.の解答を求めてみる。
コード
package main
import (
"fmt"
"os"
"strconv"
"strings"
)
func main() {
var min, max int
first := true
for {
fmt.Printf("数値(整数)を入力(qで終了): ")
var a string
fmt.Scanln(&a)
if strings.Compare(a, "q") == 0 {
break
}
i, err := strconv.Atoi(a)
if err != nil {
fmt.Fprintf(os.Stderr, "%v: 不正な入力です。\n", err)
continue
}
if first {
min = i
max = i
first = false
} else {
if i < min {
min = i
}
if i > max {
max = i
}
}
}
if first {
fmt.Println("数値の入力がありませんでした。")
} else {
fmt.Printf("最小値: %v, 最大値: %v\n", min, max)
}
}
入出力結果(Zsh、PowerShell、Terminal)
% go build main.go
% ./main
数値(整数)を入力(qで終了):
strconv.Atoi: parsing "": invalid syntax: 不正な入力です。
数値(整数)を入力(qで終了): q
数値の入力がありませんでした。
% ./main
数値(整数)を入力(qで終了): q
数値の入力がありませんでした。
% ./main
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): q
最小値: 1, 最大値: 1
% ./main
数値(整数)を入力(qで終了): 5
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): 4
数値(整数)を入力(qで終了): 2
数値(整数)を入力(qで終了): 3
数値(整数)を入力(qで終了): q
最小値: 1, 最大値: 5
% ./main
数値(整数)を入力(qで終了): 0
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): 2
数値(整数)を入力(qで終了): -2
数値(整数)を入力(qで終了): -1
数値(整数)を入力(qで終了): q
最小値: -2, 最大値: 2
% ./main
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): 2
数値(整数)を入力(qで終了): a
strconv.Atoi: parsing "a": invalid syntax: 不正な入力です。
数値(整数)を入力(qで終了): q
最小値: 1, 最大値: 2
%
0 コメント:
コメントを投稿