数组中查找两个数字,其和等于指定数字,查看本程序哪里错了

/***数组中查找两个数字,其和等于指定数字*输入一个已经升序排序过的数组和一个数字,在数组中查找两个数,*使得它们的和正好是输入的那个数字。*/packagehmzsj... /**
* 数组中查找两个数字,其和等于指定数字
* 输入一个已经升序排序过的数组和一个数字,在数组中查找两个数,
* 使得它们的和正好是输入的那个数字。
*/

package hmzsj;

public class hmzsj {

private int num1;
private int num2;
private int sum;

public void find2num(int a[],int dest){

int i = 0;
int j = a.length;
num1 = a[i];
num2 = a[j];
sum = num1 + num2;

while(sum != dest && num1 < num2){

if(sum < dest){

sum = a[i++] + num2;
}
if(sum > dest){

sum = num1 + a[j--];
}
if(sum == dest){

System.out.println(num1 + num2 == dest);
}
}

}

public static void main(String[] args){

hmzsj sf1 = new hmzsj();

int a[] = {1,2,3,4,5,6,7,8,9};
int sum = 17;

sf1.find2num(a,sum);
}
}
展开
 我来答
majing2321
2014-08-19
知道答主
回答量:16
采纳率:0%
帮助的人:15.5万
展开全部
package hmzsj;

public class hmzsj {

private int num1;
private int num2;
private int sum;
/*第一处错误:find2num方法要加static,因为main方法是static修饰的,static修饰的函数只能调用static的方法, 根本原因是static是类加载的时候就加载进来的(这个比较底层,不知道没事)*/
public static void find2num(int a[], int dest) {
int i = 0;
int j = a.length;
int num1 = a[i];
int num2 = a[j-1];
int sum = num1 + num2;
while (sum != dest && num1 < num2) {

if (sum < dest) {
//第二个错误,每次num1改变后都要赋值的,不然它永远是a[]中的第一个数
num1 = a[i++];
sum = num1 + num2;
}
if (sum > dest) {
//第三个个错误,每次num2改变后都要赋值的,不然它永远是a[]中的最后一个数
num2 = a[j--];
sum = num1 + num2;

}
if (sum == dest) {
System.out.println(num1 + num2 == dest);
System.out.println(num1 + num2 );
System.out.println(dest );

}
}
}
public static void main(String[] args){

hmzsj sf1 = new hmzsj();

int a[] = {1,2,3,4,5,6,7,8,9};
int sum = 17;

sf1.find2num(a,sum);
}
}
追问
这样不行吧
追答
运行过的,你复制出去直接运行就行了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式