Для начала, я новичок в Scala и использую этот язык в течение нескольких дней. Для класса я пытаюсь напечатать отсортированный набор целых чисел на консоли, но по какой-то причине они продолжают печатать с «D» в конце первого целого числа di-10 git при первом выводе l oop .
def getInputNumbers: (Boolean, SortedSet[Int]) {
var setOfInts: SortedSet[Int] = SortedSet()
var repeats = false
var input = readLine()
while(input != null) {
try {
val intInput = input.toInt
if(setOfInts.contains(intInput)) repeats = true
else setOfInts = setOfInts + intInput
} catch {
case e : java.lang.NumberFormatException => {
println("ERROR")
// Kill the program if there's an error with the input
sys.exit(0)
}
}
input = readLine()
}
(repeats, setOfInts)
}
val results = getInputNumbers
results._2.foreach(println(_))
if(results._1) println("REPEATS") else println("NO REPEATS")
Предполагая, что отсортированный набор содержит {1, 2, 3, 4}
, вывод является следующим:
1D
2
3
4
Но когда отсортированный набор содержит {10, 11, 12}
, вывод является следующим:
10
11
12
по желанию.
Другая интересная вещь, которая происходит, заключается в том, что при изменении кода на следующее:
def getInputNumbers(): (Boolean, SortedSet[Integer]) { ... }
val results = getInputNumbers
results._2.foreach(println(_))
results._2.foreach(println(_))
и отсортированный набор содержит {1, 2, 3, 4}
следующий результат:
1D
2
3
4
1
2
3
4
, который не согласуется с исходным оператором печати.
Похоже, что функция println()
преобразует первое целое число в двойное, но это может быть не так. Я также искал по всему inte rnet и не могу найти никаких обсуждений по этому вопросу. Любые идеи о том, как заставить это работать как задумано?