C#WriteLine工作,写入失败-古怪的bug?
因此,第59行有一个我只能描述为古怪的错误(如果我正确理解了我的代码),也就是说,如果您使用C#WriteLine工作,写入失败-古怪的bug?,c#,string,methods,C#,String,Methods,因此,第59行有一个我只能描述为古怪的错误(如果我正确理解了我的代码),也就是说,如果您使用Console.ReadLine()离开返回行,文件将运行,如果您将其更改为Console.Read(),文件运行时将产生错误。奇怪的是,它不应该运行,因为我不调用函数或执行实际的console.writes等操作。所以我希望有人能帮助我理解这一点,或者确认我认为自己有一些古怪的代码是正确的,或者我对代码如何运行的理解是错误的 产生错误的代码: public string GetStr(String St
Console.ReadLine()
离开返回行,文件将运行,如果您将其更改为Console.Read()
,文件运行时将产生错误。奇怪的是,它不应该运行,因为我不调用函数或执行实际的console.writes等操作。所以我希望有人能帮助我理解这一点,或者确认我认为自己有一些古怪的代码是正确的,或者我对代码如何运行的理解是错误的
产生错误的代码:
public string GetStr(String StrVar)//note - using strings here
{
Console.Write(StrVar);return Console.ReadLine().ToLower().Trim();
}
如果将行
return Console.ReadLine()
更改为return Console.Read()
,则会出现文件错误-但不管我实际调用什么,文件都应该运行-如果我了解发生了什么,字符串变量似乎会以某种方式自行写入控制台
完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace a015_mealCalculator
{
class Program
{
public void Play()
{
//DisplayChek("DisplayChek!");
do //do while loop
{
DisplayStr(">>>-- Meal Calculator v1.3 --<<< \n\n\n");//Welcome
//ask info
String fName = GetStr("Enter your FIRST NAME here: ");
String lName = GetStr("Enter your LAST NAME here: ");
String rName = GetStr("Enter the NAME of the RESTURANT you are dinning at here: ");
String wholeName = fName + " " + lName;
double mealCost = GetDouble("How much was your meal " + fName + "?");
String mealGreeting = "\n" + wholeName + ", your meal at " + rName + " was:";
//process math
double tax = mealCost / 8;
double tip = mealCost % 18;
double totalCost = mealCost + tip + tax;
tax = Math.Round(tax, 2);//trim decimals
tip = Math.Round(tip, 2);//trim decimals
totalCost = Math.Round(totalCost, 2);
//Announce results
Console.WriteLine("\nMeal: " + mealCost);
Console.WriteLine(mealGreeting);
Console.WriteLine("Meal: $" + mealCost);
Console.WriteLine("Tax: $" + tax);
Console.WriteLine("Tip: $" + tip);
Console.WriteLine("Total: $" + totalCost);
} while (PlayAgain());
DisplayStr("Enjoy Your Meal!"); //Salutation
}
//MaxBox
public void DisplayChek(String StringNameIs)
{ Console.WriteLine("I am in " + StringNameIs); }//Where are we?
public void DisplayStr(String StrTxt)
{ Console.WriteLine(StrTxt); }
public void DisplayRs()
{ Console.Write("\n\n"); }
public string GetStr(String StrVar)//note - using strings here
{ Console.Write(StrVar);return Console.ReadLine().ToLower().Trim(); }
public double GetDouble(String doubleRequest)// We take in a STRING but we return a DOUBLE
{
Console.WriteLine(doubleRequest + ": "); // HERE we use the STRING to ask for the DOULBE
return double.Parse(Console.ReadLine()); //HERE we RETURN the DOUBLE asked for!
}
public Boolean PlayAgain()
{
Console.Write("\n\nDo you want to play again? (y)es or (n)o: ");
String command = Console.ReadLine().ToLower();
if (command == "y" || command == "yes") return true;
return false;
}
static void Main(string[] args)
{
Program MealCalculator = new Program();
MealCalculator.Play();
//Play keeps file open
//Console.Read();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间a015_度量计算器
{
班级计划
{
公共游戏
{
//DisplayChek(“DisplayChek!”);
do//do while循环
{
DisplayStr(“>>>”--Fine Calculator v1.3--控制台。Read()返回一个整数,ReadLine()返回一个字符串
ReadLine方法或KeyAvailable属性和ReadKey方法比使用Read方法更可取。控制台。Read()返回整数,ReadLine()返回字符串
ReadLine方法或KeyAvailable属性和ReadKey方法比使用Read方法更可取。这不会作为控制台编译。Read()返回int。您不能对int执行.ToLower()。这不会作为控制台编译。Read()返回int。您不能执行.ToLower()在int上。如果查看这两种方法的文档:将从控制台流读取的下一个字符的字符代码作为整数返回,同时将行作为字符串返回。接受字符串参数,因此在第一种情况下存在类型不匹配。如果查看这两种方法的文档,则返回字符ter从控制台流中读取的下一个字符的代码为整数,同时返回一行作为字符串。接受字符串参数,因此在第一种情况下存在类型不匹配。您所说的是什么文件?我将所有代码都发布到我上面提到的文件(命名空间a015_mealCalculator),以及发布产生超级古怪的单一方法/函数,据我所知,我相信它发生在第59行。旁注:这个双提示=mealCost%18;
不符合你的意思。%
不是百分比,而是模。而不是“古怪”“请说明你在做什么时遇到了什么错误。”字符串变量以某种方式自行写入控制台”-不,它们不是。没有任何“以某种方式”自动发生的事情。你说的是什么文件?我将所有代码发布到我上面提到的文件(命名空间a015_mealCalculator),以及我所理解的产生超级古怪的奇异方法/函数,我相信它发生在第59行。旁注:这个double-tip=mealCost%18;
不符合你的意思。%
不是百分比,而是模。而不是“古怪”请说明在执行什么操作时出现的错误。“字符串变量以某种方式自行写入控制台”-不,它们不是。没有任何“以某种方式”出现的错误自动发生。哇。这对我来说完全是令人兴奋的。非常感谢。哇。这对我来说完全是令人兴奋的。非常感谢。我不知道,这对我来说是一个非常有教育意义的练习-谢谢。我想我只被允许检查一个答案,或者我会检查每个人。我认为BartoszKP是最好的答案但是所有的答案都非常有用,非常感谢。我不知道,这对我来说是一个非常有教育意义的练习-谢谢你。我想我只能检查一个答案,或者我会检查每个人。我认为BartoszKP的答案是最好的答案,但所有的答案都非常有用,非常感谢。非常感谢你的回答资料性回答。我认为Read只需阅读输入和返回的内容,readline只需阅读整行内容,包括换行符。谢谢。我确实阅读了文档-我患有诵读困难症,因此很容易遗漏内容或感到困惑。感谢您提供的非常资料性的回答。我认为Read只需阅读输入和返回的内容rned和readline重新调整了整行内容,包括换行。谢谢。我确实阅读了文档-我有诵读困难症,所以很容易错过一些东西或感到困惑。