Последняя итерация "forEach" l oop добавляет дополнительный период - PullRequest
1 голос
/ 28 мая 2020

Я новичок в kotlin, и для практики мне пришлось использовать "forEach" l oop, чтобы распечатать это из текстового файла:

*** Welcome to Taernyl's Folly ***
Dragon's Breath................5.91
Shirley temple.................4.12
Goblet of la croix.............1.22
Pickled camel hump.............7.33
Iced boilermaker..............11.22  

В файле выглядит так это:

shandy,Dragon's Breath,5.91  
elixir,shirley temple,4.12  
meal,goblet of la croix,1.22  
desert,pickled camel hump,7.33  
elixir,iced boilermaker,11.22  

поэтому я сохранил каждую строку в списке под названием 'menuFile', а затем повторил его, чтобы распечатать, как в приведенном выше меню, используя этот код:

println("*** Welcome to Taernyl's Folly ***")
    menuFile.forEach{
        val (type, name, price)=it.split(",")
        val x=34-(price.length+name.length)
        var dots=""
        val dot="."
        var padding=0
        while(padding<=x){
            dots+=dot
            padding++
        }
        println("${name.capitalize()}$dots$price")

проблема в том, что по какой-то причине на последней итерации l oop всегда добавляется дополнительный период, так что последняя строка «меню» всегда не совпадает с остальными элементами меню. Неважно, какой из предметов я кладу последним, он всегда добавляет дополнительный.

1 Ответ

0 голосов
/ 28 мая 2020

Как Tenfour04 писал выше, у вас проблема с возвратом каретки (CR). Если вы напечатаете price.length, вы увидите, что 7.33 имеет ту же длину, что и 11.22 :) Если вы не знаете, как его удалить, вы можете просто сохранить файл bignerdranch.com/ solutions / tavern-menu-data.txt. копирования / вставки :)

Вы можете использовать "повтор" для создания точек.

...