数组中查找两个数字,其和等于指定数字,查看本程序哪里错了
/***数组中查找两个数字,其和等于指定数字*输入一个已经升序排序过的数组和一个数字,在数组中查找两个数,*使得它们的和正好是输入的那个数字。*/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);
}
} 展开
* 数组中查找两个数字,其和等于指定数字
* 输入一个已经升序排序过的数组和一个数字,在数组中查找两个数,
* 使得它们的和正好是输入的那个数字。
*/
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);
}
} 展开
1个回答
展开全部
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);
}
}
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);
}
}
追问
这样不行吧
追答
运行过的,你复制出去直接运行就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询