java方法的调用,一段小代码,可以运行,但是不出结果,一直在运行,请大家帮忙看看。

import java.util.Scanner;

public class SumN {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("Please input your Number to get Sum:");
int num = input.nextInt();
if (num <=10){
sumWhile(num);
}
else
sumFor(num);
}

//while to get sum;
static void sumWhile(int n){
int i=1,sum=0;
while(i<=n){
sum = sum + i;
}
System.out.println("The Sum use while to get is :"+sum);
}

//for to get sum;
static void sumFor(int n){
int i=1,sum=0;
for(i=1;i<=n;i++){
sum = sum + i;
}
System.out.println("The Sum use for to get is :"+sum);
}
}

还有就是我想在main方法中调用本类中非static的方法改怎么做?或者根本就不能这么做。

主要的问题是你的第一个方法中
static void sumWhile(int n){
int i=1,sum=0;
while(i<=n){
sum = sum + i;
}
System.out.println("The Sum use while to get is :"+sum);
}
中缺少变量的自增i++,所以一直循环,而且你输入的值肯定是<=10,这样就给你的感觉是程序一直没有结果,而如果你输入的值是11,则会出现结果,因为你的第二个方法有循环变量的自增。

关于在main方法中调用本类中非static的方法改怎么做?解答是new SumN().sumWhile(num);具体程序见下面。
import java.util.Scanner;

public class SumN {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("Please input your Number to get Sum:");
int num = input.nextInt();
if (num <=10){
new SumN().sumWhile(num);
// sumWhile(num);
}
else
sumFor(num);
}

//while to get sum;
void sumWhile(int n){
int i=1,sum=0;
while(i<=n){
sum = sum + i;
i++;
}
System.out.println("The Sum use while to get is :"+sum);
}

//for to get sum;
static void sumFor(int n){
int i=1,sum=0;
for(i=1;i<=n;i++){
sum = sum + i;
}
System.out.println("The Sum use for to get is :"+sum);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-17
本类中非static的方法 new 一下这个类 然后调用他的方法就可以了

你这个一直在运行 是因为需要输入一个数字 不输入就会一直在那等待追问

感谢你的回答!

第2个回答  2013-07-17
静态方法调用非静态方法,需要穿件对象,使用对象名.方法名 调用
静态方法调用 静态方法,直接使用类名.方法名 调用追问

可以在类里面调用当前类的方法吗?

追答

可以

第3个回答  2013-07-17
1、程序一直运行是因为:你输入了大于等于1 小于等于10的数字,进入sumWhile方法,而sumWhile方法死循环了。
2、如果想在main方法里面调用非static方法。可以定义一个非static的方法(比如sumFor
去掉前面的static),然后 SumN sumN= new SumN(); sumN.sumFor(12);追问

你的回答也很好,可是只能采用一个满意回答

追答

没事

第4个回答  2013-07-17
sumWhile(int n)是死循环的,你的while条件跟sum就没有关系。你的i=1那我随便填一个比1大比10小(或等)的数字,这个while循环就回一直走下去。
第5个回答  2013-07-17
两个方法都是死循环,主方法也是死循环, 当然会一直运行下去,可以给n设定一个值,主方法中num的取值也要设置一个区域,这样循环才会停啊,static的用法:简单的说,静态成员不能访问非静态成员,非静态成员可以访问静态成员,记住就OK
相似回答