我正在嘗試回圈通過 C# 中的開關,以獲得基于用戶輸入回傳資料的簡單控制臺應用程式。我是編碼新手。我知道在嘗試實作我的回圈之前,Switch 可以正常作業。但是當我將回圈代碼添加到我的程式中時,我無法讓它提供資料。
我嘗試完全取消開關并為每個“案例”使用獨立的 If 陳述句,但這也不起作用。如果可能的話,我真的很想看到開關在回圈中作業。
static void Main(string[] args)
{
var repeat = true;
while(repeat)
{
Console.WriteLine("Hello. Which instrument would you like to review? Type Quit to exit the program.");
string instruments = Console.ReadLine();
var action = Console.ReadLine();
if (action == instruments)
{
switch (instruments)
{
case "Jazzmaster":
string jazzmasterMake = "Fender";
string jazzmasterModel = "Jazzmaster";
string jazzmasterType = "guitar";
string jazzmasterCountry = "Japan";
int jazzmasterYear = 1997;
string jazzmasterSerial = "A019459";
string jazzmasterColor = "Sunburst";
{
Console.WriteLine("Your " jazzmasterMake " " jazzmasterModel " is a " jazzmasterType " made in " jazzmasterCountry
" in " jazzmasterYear " in a " jazzmasterColor " color and with a serial number of " jazzmasterSerial ".");
}
break;
case "Jaguar":
string jaguarMake = "Fender";
string jaguarModel = "Jaguar";
string jaguarType = "guitar";
string jaguarCountry = "Japan";
int jaguarYear = 1997;
string jaguarSerial = "A035931";
string jaguarColor = "White";
{
Console.WriteLine("Your " jaguarMake " " jaguarModel " is a " jaguarType " made in " jaguarCountry
" in " jaguarYear " in a " jaguarColor " color and with a serial number of " jaguarSerial ".");
}
break;
case "Stratocaster":
string stratocasterMake = "Fender";
string stratocasterModel = "Stratocaster";
string stratocasterType = "guitar";
string stratocasterCounty = "USA";
int stratocasterYear = 2018;
string stratocasterSerial = "US18004688";
string stratocasterColor = "Black";
{
Console.WriteLine("Your " stratocasterMake " " stratocasterModel " is a " stratocasterType " made in " stratocasterCounty
" in " stratocasterYear " in a " stratocasterColor " color and with a serial number of " stratocasterSerial ".");
}
break;
default:
Console.WriteLine("That instrument is not in your collection.");
break;
}
}
else if (action == "Quit")
{
repeat = false;
}
}
}
}
}
uj5u.com熱心網友回復:
我會洗掉action
andinstruments
和if else
and 只是呼叫你得到的輸入choice
,因為這是用戶想要的。我不會在這里重新創建你的整個代碼,但是:
static void Main(string[] args)
{
var repeat = true;
while(repeat)
{
Console.WriteLine("Hello. Which instrument would you like to review? Type Quit to exit the program.");
string choice = Console.ReadLine();
switch (choice)
{
case "Jazzmaster":
// Jazzmaster stuff
break;
case "Jaguar":
// Jaguar stuff
break;
case "Stratocaster":
// Stratocaster stuff
break;
case "Quit"
repeat = false;
break;
default:
Console.WriteLine("That instrument is not in your collection.");
break;
}
}
}
這似乎更容易理解發生了什么。您可以使用其他技巧來清理代碼,例如創建一個Instrument
覆寫的抽象類ToString()
,以列印您想要的任何屬性,但這超出了您提出的問題的范圍。
最終的問題是您試圖從現有代碼中獲取兩個輸入。
uj5u.com熱心網友回復:
對于您共享的代碼,您必須輸入兩次 instrument 才能獲得審核。問題出在這里:
Console.WriteLine("Hello. Which instrument would you like to review? Type Quit to exit the program.");
string instruments = Console.ReadLine();
var action = Console.ReadLine();
if (action == instruments)
通知Console.ReadLine()
執行兩次。為了輸入if
,您必須有兩個匹配的輸入字串。
uj5u.com熱心網友回復:
這是實作代碼的另一種方法。我發布它不是作為對您問題的直接回答,而是作為一種展示替代方法來幫助您學習的方式。
static void Main(string[] args)
{
Dictionary<string, Instrument> instruments = new Dictionary<string, Instrument>()
{
{ "Jazzmaster", new Instrument() { Make = "Fender", Model = "Jazzmaster", Type = "guitar", Country = "Japan", Year = 1997, Serial = "A019459", Color = "Sunburst", } },
{ "Jaguar", new Instrument() { Make = "Fender", Model = "Jaguar", Type = "guitar", Country = "Japan", Year = 1997, Serial = "A035931", Color = "White", } },
{ "Stratocaster", new Instrument() { Make = "Fender", Model = "Stratocaster", Type = "guitar", Country = "USA", Year = 2018, Serial = "US18004688", Color = "Black", } },
};
while (true)
{
Console.WriteLine("Hello. Which instrument would you like to review? Type Quit to exit the program.");
string input = Console.ReadLine();
if (input.ToLowerInvariant() == "quit")
{
break;
}
else if(instruments.ContainsKey(input))
{
Instrument instrument = instruments[input];
Console.WriteLine($"Your {instrument.Make} {instrument.Model} is a {instrument.Type} made in {instrument.Country} in {instrument.Year} in a {instrument.Color} color and with a serial number of {instrument.Serial}.");
}
else
{
Console.WriteLine("That instrument is not in your collection.");
}
}
}
public class Instrument
{
public string Make { get; init; }
public string Model { get; init; }
public string Type { get; init; }
public string Country { get; init; }
public int Year { get; init; }
public string Serial { get; init; }
public string Color { get; init; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506271.html