c# 在main函数中怎么调用无参的构造函数
using System.Collections.Generic;
using System.Text;
/*
1.构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个
* double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,
* 传入参数为两个Point类实例。然后设计一个测试类来对Point类进行使用。
提示:先定义两个变量来存储Point点的X,Y坐标;无参的构造函数将X,Y坐标赋为0;
* 有参的构造函数将传入的参数分别赋给X,Y坐标。
*/
namespace test2._
{
class Point
{
public double x;
public double y;
public Point() { }
public Point(double x, double y)
{
this.x = x;
this.y = y;
}
public static double calculate(double x, double y, double a, double b)
{
double d;
d = Math.Sqrt((x - a) * (x - a) + (y - b) * (y - b));
return d;
}
static void Main(string[] args)
{
Point p1 = new Point();
Point p2 = new Point();
Console.WriteLine("please input 2 numbers:");
p1.x = double.Parse(Console.ReadLine());
p1.y = double.Parse(Console.ReadLine());
p2.x = double.Parse(Console.ReadLine());
p2.y = double.Parse(Console.ReadLine());
Console.WriteLine("两点距离是:" + calculate(p1.x, p1.y, p2.x, p2.y));
Console.ReadKey();
}
}
}
我想实现如果不输入数字,他默认为0 的程序 可是不知道该怎么改
我一不输入数字(之间按个回车)他就出现异常
亲帮忙看看 怎么改
要实现方法的重载 展开
你这种写法是不行的,再者,这个和构造函数没关哈,因为你的数据是采用double.parse方法传入的。根据你的意思,最好还是放在构造函数里面比较好,我已经运行出来了,完整的代码如下,你看看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Point
{
public double x;
public double y;
public Point()
{
Console.WriteLine("please input the points' x & y:");
try
{
this.x = double.Parse(Console.ReadLine());
}
catch(Exception e)
{
this.x = 0;
}
try
{
this.y = double.Parse(Console.ReadLine());
}
catch (Exception e)
{
this.y = 0;
}
}
public static double calculate(double x, double y, double a, double b)
{
double d;
d = Math.Sqrt((x - a) * (x - a) + (y - b) * (y - b));
return d;
}
static void Main(string[] args)
{
Point p1 = new Point();
Point p2 = new Point();
Console.WriteLine("两点距离是:" + calculate(p1.x, p1.y, p2.x, p2.y));
Console.ReadKey();
}
}
}
可以使用double.tryParse这个函数。
p1.x = double.Parse(Console.ReadLine());
p1.y = double.Parse(Console.ReadLine());
p2.x = double.Parse(Console.ReadLine());
p2.y = double.Parse(Console.ReadLine());
改为
double doubleVal;
boolean result ;
result = Double.TryParse(Console.ReadLine(), out doubleVal);
if (result==true)
{
p1.x=doubleVal;
}
else
{
p1.x=0;
}
result = Double.TryParse(Console.ReadLine(), out doubleVal);
if (result==true)
{
p1.y=doubleVal;
}
else
{
p1.y=0;
}
result = Double.TryParse(Console.ReadLine(), out doubleVal);
if (result==true)
{
p2.x=doubleVal;
}
else
{
p2.x=0;
}
result = Double.TryParse(Console.ReadLine(), out doubleVal);
if (result==true)
{
p2.y=doubleVal;
}
else
{
p2.y=0;
}
{
this.x=0;
this.y=0;
}
x = y = 0;
}
只有该这里即可
A()
{
public
A()
{
}
}
int
main()
{
A
a=new
A();//这里就是调用了无参构造函数
}
这种基本的问题网上搜下很多
a
{
public
a()
{
}
public
a(int
a)
:this()
{
}
}
当a
a=new
a(1);
时
会先调用无参数的构造函数。在调用有参数那个