using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication29
{
enum orientation : byte
{
north=1,
south=2,
east=3,
west=4
}
struct route
{
public orientation direction;
public double distance;
}
class Program
{
[STAThread]
static void Main(string[] args)
{
route myroute;
int mydirection = -1;
double mydistance;
Console.WriteLine("1)north\n2)south\n3)east\n4)west");
do{
Console.WriteLine("select a direction:");
mydirection=Convert.ToInt32(Console.ReadLine());
}
while ((mydirection<1)||(mydirection>4));
Console.WriteLine("input a distance:");
mydistance = Convert.ToDouble(Console.ReadLine());
myroute.direction=(orientation)mydirection;
myroute.distance=mydistance;
Console.WriteLine("myroute specifies a direction of {0} and a"+"distance of {1}",myroute.direction,myroute.distance);
}
}
}
一直看不明白这个题的意思 包括显示结果的原理。尤其是红色不分一直想不明白这几个量究竟怎么回事 麻烦谁给指点下!
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication29
{
enum orientation : byte
{
north=1,
south=2,
east=3,
west=4
}
struct route
{
public orientation direction;
public double distance;
}
class Program
{
[STAThread]
static void Main(string[] args)
{
route myroute;
int mydirection = -1;
double mydistance;
Console.WriteLine("1)north\n2)south\n3)east\n4)west");
do{
Console.WriteLine("select a direction:");
mydirection=Convert.ToInt32(Console.ReadLine());
}
while ((mydirection<1)||(mydirection>4));
Console.WriteLine("input a distance:");
mydistance = Convert.ToDouble(Console.ReadLine());
myroute.direction=(orientation)mydirection;
myroute.distance=mydistance;
Console.WriteLine("myroute specifies a direction of {0} and a"+"distance of {1}",myroute.direction,myroute.distance);
}
}
}
一直看不明白这个题的意思 包括显示结果的原理。尤其是红色不分一直想不明白这几个量究竟怎么回事 麻烦谁给指点下!
myroute.distance=mydistance; //给结构副值一个自己输入的值
至于红色部分
myroute.direction=(orientation)mydirection; //int类型和枚举类型是互相可以强制转换的。枚举里的枚举值按照定义的顺序分别对应int型的0,1,2,3,....显示结果的原理和C++差不多,{n}就是占位符,显示时就把{n}替换成后面变量列表中的第n+1个变量的值建议你在细看看C#里的基本语法把
myroute.direction=(orientation)mydirection;
myroute.distance=mydistance;
double mydistance; 是double的.把它转换成枚举型的orientation((orientation)mydirection这个就是类型转换),然后赋给结构的direction成员.
第一句更简单就是把一个值赋给结构distance成员
myroute.distance=mydistance //类型相同,无需转换,直接赋值
并在结果中显示枚举的值,比如结果是1 就显示为 north 2就显示为south .. 等等 myroute.distance=mydistance;
就是把
mydistance = Convert.ToDouble(Console.ReadLine());
用户输入的数值,副给distance
其实在结果中显示的 "+"distance of {1}", 值,即是mydistance
myroute.direction = (orientation)mydirection; 使用强制类型转换将整型值转换成orientation类型的枚举值,并将结果赋值给myroute的direction成员。因为mydirection已经被验证是1-4的整数,所以在进行强制转换以后,结果一定是orientation枚举中对应该整数值的那一项(north,south,east,west中的一个)。myroute.distance = mydistance; 更简单了,只是将用户输入的double类型的mydistance值赋值给myroute的distance成员。最后便是格式化输出了。
myroute.direction=(orientation)mydirection;输出枚举的名字
myroute.distance=mydistance; 结构体的字段