从用户那里获取价值
Getting Values from User
你好,我在获取系统生成的变量的值时遇到问题。这是从用户获取值的代码;
public void DetailsRate()
{
begin1:
Console.WriteLine("\n \t Rate the Acting on a scale of 0 to 5");
RateActing = int.Parse(Console.ReadLine());
switch (RateActing)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
Console.WriteLine("\n you have rated the action of the movie {0}", RateActing);
break;
default:
Console.WriteLine("you have selected the wrong choice {0}", RateActing);
goto begin1;
}
begin2:
Console.WriteLine("\n \t Rate the music of the movie on a scale of 0 to 5");
RateMusic = int.Parse(Console.ReadLine());
switch (RateMusic)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
Console.WriteLine("you have rated the music of the movie {0}", RateMusic);
break;
default:
Console.WriteLine("you have selected the wrong choice {0}", RateMusic);
goto begin2;
}
}
我将输入的值调用到这段代码中
public double getoverallRate(double rateact, double ratemus)
{
double totrate = 0;
rateact = RateActing * 0.25;
ratemus = RateMusic * 0.15;
totrate = (rateact + ratemus);
return totrate;
}
这是主要方法
static void Main(string[] args)
{
MovieRating MR = new MovieRating();
MR.DetailsRate();
MovieRating MT = new MovieRating();
double totrate = MT.getoverallRate(1, 2);
Console.WriteLine("total rate is {0}", totrate);
Console.ReadKey();
}
拜托,我错过了 totrate 的值,只是给我 0。请帮助我。
首先去掉 goto 语句。快速浏览一下,您可以这样写:
static void Main(string[] args)
{
double RateActing = -1;
double RateMusic = -1;
RateActing = GetMovieRating(RateActing);
RateMusic = GetMovieMusicRating(RateMusic);
double totrate = getoverallRate(RateActing, RateMusic);
Console.WriteLine("total rate is {0}", totrate);
Console.ReadKey();
}
private static double GetMovieRating(double RateActing)
{
do
{
Console.WriteLine("\n \t Rate the Acting on a scale of 0 to 5");
double.TryParse(Console.ReadLine(), out RateActing);
}
while (RateActing < 0 || RateActing > 5);
Console.WriteLine("\n you have rated the action of the movie {0}", RateActing);
return RateActing;
}
private static double GetMovieMusicRating(double RateMusic)
{
do
{
Console.WriteLine("\n \t Rate the music of the movie on a scale of 0 to 5");
double.TryParse(Console.ReadLine(), out RateMusic);
}
while (RateMusic < 0 || RateMusic > 5);
Console.WriteLine("\n you have rated the music of the movie {0}", RateMusic);
return RateMusic;
}
public static double getoverallRate(double rateact, double ratemus)
{
rateact *= 0.25;
ratemus *= 0.15;
return rateact + ratemus;
}
这里有很多问题 - 几乎足以重新开始!
首先:切勿使用 goto
- 有更好的方法来构建您的程序流程。
其次:您的方法 getoverallRate
使用的参数 (2) 比您传入的参数 (5) 少,所以这甚至不应该构建。
第三:您在 getoverallRate
中引用了三个额外的变量,它们看起来应该是局部变量,但它们没有在任何地方定义。这些是否应该像 Main
.
中暗示的用法那样传递?
第四:您在变量 rateact
和 ratemus
中传递值,但您会立即用计算覆盖它们。
第五:如果您将用户的输入值与您需要的任何其他值一起传递给此方法,对我来说会更有意义。您不应在任何计算值和 returns 结果的方法中使用来自用户输入的全局变量。您应该始终传入计算所需的任何内容。
六:MR
声明的意义何在,DetailsRate
有什么作用?
你好,我在获取系统生成的变量的值时遇到问题。这是从用户获取值的代码;
public void DetailsRate()
{
begin1:
Console.WriteLine("\n \t Rate the Acting on a scale of 0 to 5");
RateActing = int.Parse(Console.ReadLine());
switch (RateActing)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
Console.WriteLine("\n you have rated the action of the movie {0}", RateActing);
break;
default:
Console.WriteLine("you have selected the wrong choice {0}", RateActing);
goto begin1;
}
begin2:
Console.WriteLine("\n \t Rate the music of the movie on a scale of 0 to 5");
RateMusic = int.Parse(Console.ReadLine());
switch (RateMusic)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
Console.WriteLine("you have rated the music of the movie {0}", RateMusic);
break;
default:
Console.WriteLine("you have selected the wrong choice {0}", RateMusic);
goto begin2;
}
}
我将输入的值调用到这段代码中
public double getoverallRate(double rateact, double ratemus)
{
double totrate = 0;
rateact = RateActing * 0.25;
ratemus = RateMusic * 0.15;
totrate = (rateact + ratemus);
return totrate;
}
这是主要方法
static void Main(string[] args)
{
MovieRating MR = new MovieRating();
MR.DetailsRate();
MovieRating MT = new MovieRating();
double totrate = MT.getoverallRate(1, 2);
Console.WriteLine("total rate is {0}", totrate);
Console.ReadKey();
}
拜托,我错过了 totrate 的值,只是给我 0。请帮助我。
首先去掉 goto 语句。快速浏览一下,您可以这样写:
static void Main(string[] args)
{
double RateActing = -1;
double RateMusic = -1;
RateActing = GetMovieRating(RateActing);
RateMusic = GetMovieMusicRating(RateMusic);
double totrate = getoverallRate(RateActing, RateMusic);
Console.WriteLine("total rate is {0}", totrate);
Console.ReadKey();
}
private static double GetMovieRating(double RateActing)
{
do
{
Console.WriteLine("\n \t Rate the Acting on a scale of 0 to 5");
double.TryParse(Console.ReadLine(), out RateActing);
}
while (RateActing < 0 || RateActing > 5);
Console.WriteLine("\n you have rated the action of the movie {0}", RateActing);
return RateActing;
}
private static double GetMovieMusicRating(double RateMusic)
{
do
{
Console.WriteLine("\n \t Rate the music of the movie on a scale of 0 to 5");
double.TryParse(Console.ReadLine(), out RateMusic);
}
while (RateMusic < 0 || RateMusic > 5);
Console.WriteLine("\n you have rated the music of the movie {0}", RateMusic);
return RateMusic;
}
public static double getoverallRate(double rateact, double ratemus)
{
rateact *= 0.25;
ratemus *= 0.15;
return rateact + ratemus;
}
这里有很多问题 - 几乎足以重新开始!
首先:切勿使用 goto
- 有更好的方法来构建您的程序流程。
其次:您的方法 getoverallRate
使用的参数 (2) 比您传入的参数 (5) 少,所以这甚至不应该构建。
第三:您在 getoverallRate
中引用了三个额外的变量,它们看起来应该是局部变量,但它们没有在任何地方定义。这些是否应该像 Main
.
第四:您在变量 rateact
和 ratemus
中传递值,但您会立即用计算覆盖它们。
第五:如果您将用户的输入值与您需要的任何其他值一起传递给此方法,对我来说会更有意义。您不应在任何计算值和 returns 结果的方法中使用来自用户输入的全局变量。您应该始终传入计算所需的任何内容。
六:MR
声明的意义何在,DetailsRate
有什么作用?