Я использую Powershell для разбора файла CSV.Файл CSV представляет собой перечень игр, включая их название, жанр и цену.Сценарий предназначен для выполнения базовых запросов на вывод файла;это мое типичное упражнение, которое я использую для тренировки ввода / вывода файлов с новыми языками.Один из моих запросов возвращает неожиданный вывод.
входной файл:
Name,Genre,Price
Age_of_Empires,RTS,19.99
Europa_Universalis_IV,GS,129.99
Skyrim,RPG,60.00
Oblivion,RPG,30.00
Morrowind,RPG,10.00
Call_of_Duty,FPS,60.00
Knights_and_Merchants,RTS,5.00
Halo,FPS,60.00
Empire_Earth,RTS,10.00
Civilization,GS,59.99
Empires_Apart,RTS,10.00
Battlefield,FPS,59.99
Paper_Mario,RPG,2.99
Victoria_II,GS,9.99
Cultures,RPG,7.99
PUBG,FPS,79.99
Crusader_Kings,GS,9.99
А вот мой сценарий:
#Parses data file
#Format: [Name],[Genre],[Price]
$file = Import-Csv .\inventory
echo ""
echo "Welcome to `"GameGO`"! here is our current inventory..."
echo $file #Print out the inventory
Read-Host "Press Enter to continue" #This is only here because it keeps the program from running out of order
do #Use a loop to ask if the user wants to inquire many items
{
$choice = Read-Host "What would you like to inquiry?"
#The following blocks of if statements will be used to determine what output to give. Note that the user
#will have to know verbatim what commands to give
if ($choice -eq "average")
{
#Removed for simplicity on Stack Overflow
}
elseif ($choice -eq "highest")
{
$high = 0 #To be safe?
$highGame = "null" #Do I have to initalize this to a value?
ForEach ($line In $file)
{
if ($line.Price -gt $high)
{
$highGame = $line.Name
$high = $line.Price
echo "The new most expensive game is $highGame and it costs $high." #Debug statement!
}
}
echo "The final most expensive game is $highGame and it costs $high."
}
$loop = Read-Host "Would you like to inquire something else? Y\N"
} while ($loop = "Y")
Мой оператор if, который проверяет на самый высокийценная игра дает неверное значение.Возвращаемое неверное значение соответствует, но без какого-либо шаблона, который я могу распознать.
Как сейчас стоит программа:
What would you like to inquiry?: highest
The new most expensive game is Age_of_Empires and it costs 19.99.
The new most expensive game is Skyrim and it costs 60.00.
The new most expensive game is Victoria_II and it costs 9.99.
The final most expensive game is Victoria_II and it costs 9.99.
Я попытался изменить цены вокруг, удалить названия, добавивновые, переупорядочивание и т. д. Но ни один отладочный тест не может привести к тому, что я действительно смогу увидеть, где моя ошибка.Кажется, нет никаких оснований для этого.Мне нужна еще пара глаз на это.
Кроме того, у меня странная ошибка, когда команды Read-Host приводят к тому, что строки сценария не работают.Как ни странно, это решается добавлением Read-Host «Нажмите Enter для продолжения».Я не беспокоюсь об этом сейчас, я только включаю это объяснение, чтобы помочь вам понять, почему эта строка включена.