gpt4 book ai didi

string - 为什么我得到的字符串长度值不正确?

转载 作者:行者123 更新时间:2023-12-04 18:11:21 25 4
gpt4 key购买 nike

我的教授正在使用 Horstmann 的书“不耐烦的 Scala”教我们 Scala,我们的一项家庭作业直接来自这本书;第 4 章,练习 2。

我们希望以文本格式阅读电子书,教授已指定输入文件应为“Moby Dick”,可从 Guttenberg 项目免费获得:http://www.gutenberg.org/ebooks/2701.txt.utf-8

我的代码有效,就计算单词的实例而言。但是,他添加了要求,我们必须将输出格式化为两列,其中单词左对齐,计数右对齐。为此,我正在确定书中最长的单词,以便计算“单词”列的宽度。但是,我得到的字符串长度值是错误的。事实上,它告诉我所有的字符串都是相同的长度。 "a"被报告为长度 26,就像 "Whale"、"Ishmael"等...

这是代码:

object Chapter4Exercise2 extends App {

//for sorting
import util.Sorting._

//grab the file
val inputFile = new java.util.Scanner(new java.io.File("moby.txt"))

//create a mutable map where key/values == word/count
val wordMap = collection.mutable.Map[String, Int]() withDefault (_ => 0)

//for formatting output (later), the longest word length is relevant
var longestWord = 0
var theWord: String = ""

//start reading each word in the input file
while (inputFile hasNext) {
//grab the next word for processing, convert it to lower case, trim spaces and punctuation
var nextWord = inputFile.next().toLowerCase().trim().filter(Character.isLetter(_))
//if it's the longest word, update both theWord and longestWord
if (nextWord.size > longestWord) longestWord = nextWord.size; theWord = nextWord; println(theWord + " " + longestWord)
//update the map value for the key with same value as nextWord
wordMap(nextWord) += 1
}

println("Longest word is " + theWord + " at " + longestWord + " Characters")
}

这些行的输出:
    if (nextWord.size > longestWord) longestWord = nextWord.size; theWord = nextWord; println(theWord + " " + longestWord)


    println("Longest word is " + theWord + " at " + longestWord + " Characters")

很遥远。它告诉我输入文件中的每个单词都是 26 个字符长!

这是输出的一个小样本:

外壳 26

26日

26

冲浪26

海滩 26

和 26

然后 26

潜水 26

下降 26

进入 26

我错过了什么/做错了什么?

最佳答案

if (nextWord.size > longestWord) longestWord = nextWord.size; theWord = nextWord; println(theWord + " " + longestWord)

你不应该像那样在一行上写多个语句。让我们把它写成多行并正确缩进:
if (nextWord.size > longestWord)
longestWord = nextWord.size
theWord = nextWord
println(theWord + " " + longestWord)

你现在看到问题了吗?

关于string - 为什么我得到的字符串长度值不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com