**
在方法中对程序代码进行分组
1.不带参数的方法
2.带参数的方法
3.在另一个方法中调用
4.如何创建递归方法
**
初步认识方法
在面向对象编程中,类有两个重要部分,即数据和方法,方法有时也称为函数。比如构造函数,也可以称为构造方法,构造方法是类里面一个特殊的方法,用来初始化对象。类中的数据表示对象的属性,而方法表示对象的行为。
要创建一个方法,必须做两件事,即定义方法和调用方法Java编程中的方法有两种类型,一种是没有返回值的方法,另一种是有返回值的方法。
要了解更多细节,这里是在Java中定义方法的一般格式。
1.不带参数的方法
void method_name()
{
Statement 1;
Statement 2;
……
}
下面是定义带有返回值的方法的格式
returnvaluetype method_name()
{
Statement 1;
Statement 2;
……
return value;
}
在定义方法之前,必须使用以下代码导入Vector类
import java.util.Vector;
下面是定义该方法的代码。
Vector data=new Vector();
public DataForm() {
initComponents();
}
void DisplayData()
{
data.add("依凡");
data.add("春白");
data.add("新槐");
data.add("青筠");
data.add("白云");
data.add("盼夏");
data.add("夜丹");
data.add("醉芹");
data.add("新柔");
data.add("幼琴");
listData.setListData(data);
}
2.带参数的方法
如果将处理的数据用作参数,则方法可以处理不同的数据。通过在方法中传递参数,该方法处理的数据将是动态的。
viod method_name(datatype par1, datatype per2)
{
Statement 1;
Statement 2;
……
}
或
returnvaluetype method_name(datatype par1, datatype per2)
{
Statement 1;
Statement 2;
……
}
1.1案例——字符数计算器
下面是定义CalculateChar方法的代码。
void CalculateChar(String sentence)
{
int totalchar=0;
int space=0;
int newline=0;
for(int i=0;i< sentence.length();i++)
{
if(sentence.charAt(i)==' ')
space++;//计算空间
else if((int) sentence.charAt(i)==10)
newline++;//计算换行符
else
totalchar++;//计算字符
}
txtNumChar.setText(""+totalchar);
txtNumSpace.setText(""+space);
txtNumNewline.setText(""+newline);
}
定义CalculateChar方法之后,下一步是在单击“Process”按钮时调用该方法。下面是按钮的事件。
private void ProcessButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String sentence=txtareaSentence.getText();
CalculateChar(sentence);
}
3.在另一个方法中调用
我们将学习如何在另一个方法中调用一个方法。如果一个方法与另一个方法相关联,则通常通过另一个方法来调用该方法。
在定义方法之前,必须使用以下代码导入Vector类。
import java.util.Vector;
下面是定义IsPrime方法和DisplayPrime方法的代码。
boolean IsPrime(int number)
{
int sqrt=(int) Math.sqrt(number)+1;
for (int i=2;i< sqrt;i++)
{
if(number%i==0)
{
return false;
}
}
return true;
}
void DisplayPrime(int number)
{
int total=0;
Vector primenumbers=new Vector();
for(int i=2;i<=number;i++)
{
if(IsPrime(i)) //传给IsPrime方法
{
primenumbers.add(i);
total+=i;
}
}
listPrimeNumbers.setListData(primenumbers);//显示列表中的质数
txtTotal.setText(""+total);//在文本字段中显示总计
}
4.如何重载方法
方法重载是一种编程技术,它允许两个或多个方法具有相同的名称,但具有不同类型的参数。通过使用重载技术,可以创建两个或多个具有相同名称的方法,但每个方法具有不同的参数。
int Add(int a, int b)
{
renturn (a+b);
}
double Add(double a, double b)
{
renturn (a+b);
}
案例——圆面积周长计算器
本例中的程序将计算圆的周长和面积。程序会要求用户输入你要计算的圆的半径。该程序提供了名为CalculateArea和CalculateCircumference的两种方法来计算圆的面积和周长。这两个方法都将被重载,以便处理的数据可以是int或double类型。
下面是定义CalculateArea方法和CalculateCircumference方法的代码。
int CalculateArea(int r)
{
int result=(int)(Math.PI*r*r);
return result;
}
double CalculateArea(double r)
{
double result=Math.PI*r*r;
return result;
}
int CalculateCircumference(int r)
{
int result=(int)(4*Math.PI*r);
return result;
}
double CalculateCircumference(double r)
{
double result=4*Math.PI*r;
return result;
}
定义并重载这两个方法之后,下一步是为每个按钮创建事件。以下是两个按钮的事件代码。
private void CalculateIntButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(!txtRadius.getText().isEmpty())
{
int r=(int)Double.parseDouble(txtRadius.getText());
int area=CalculateArea(r);
int circumference=CalculateCircumference(r);
txtArea.setText(""+area);
txtCircumference.setText(""+circumference);
}
}
private void CalculateDoubleButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(!txtRadius.getText().isEmpty())
{
double r=Double.parseDouble(txtRadius.getText());
double area=CalculateArea(r);
double circumference=CalculateCircumference(r);
txtArea.setText(String.format("%.4f",area));
txtCircumference.setText(String.format("%.4f",circumference));
}
}
4.如何创建递归方法
递归方法是调用自身的方法。递归是一种允许方法调用自身的编程技术。递归方法将重复调用它自身,因此我们需要一个使调用停止的条件。使用递归方法解决问题与使用循环语句解决问题具有相同的工作原理。
案例——表白神器V2
在定义方法之前,必须使用以下代码导入Vector类:
import java.util.Vector;
下面是定义Display方法的代码。
Vector data=new Vector();
public StringForm(){
initComponents();
}
void Display(int n)
{
if(n>1)
Display(n-1);
data.add("爱你一生一世"+n);
}
以下是“Display”按钮事件的代码。
private void DisplayButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Display(10);
listString.setListData(data);
}
递归方法过程图