我开始在课堂上学习方法,但进展并不顺利(循环也有一些问题,但那是另一个故事了)。
我正在尝试做一个要求数字的练习,直到我引入一个负数。
我创建了程序,但计数器不工作,我不知道为什么,我确信这是一个愚蠢的问题,但我看不到它在哪里。有人可以帮我吗?
import java.util.Scanner;
/**
*
* @author xxx
*/
public class Ej08Metodos {
public static void main(String[] args) {
int n, contador = 0;
n = pedirNum();
contador = contar(n);
System.out.println("Se han introducido "+contador+" números positivos");
}
public static int pedirNum(){
Scanner sc = new Scanner(System.in);
int n;
do{
System.out.println("Introduce un número");
n = sc.nextInt();
if(n < 0){
System.out.println("Has introducido un número negativo");
}
}while(n >= 0);
return n;
}
public static int contar(int num){
int cont = 0;
while(num >= 0){
cont++;
}
return cont;
}
}
我现在正在尝试将早期的练习分成方法。程序应该要求我输入数字,直到我输入一个负数,然后它应该显示我输入了多少正数。
错误:
while(num >= 0){
cont++;
}
这是无限循环。您应该将其替换为
if
。
您的计数器方法
contar()
未计数。直到将其移至do-while
循环。并且您可以检查参数值只能是正数。
用于计数数字的变量不应该是方法的局部变量,否则每次调用方法时它都将始终为 0,但您需要在每个输入的数字的循环中调用它。
如果你想将你的程序拆分为方法,那么你应该知道你的方法
perdirNum()
是无用的,它有一个错误,只返回负数并且不计算它。所以可以删除。
这些是您必须在代码中修复才能重写的主要错误。
“...我创建了程序,但计数器不工作,我不知道为什么,我确定这是一个愚蠢的问题,但我看不到它在哪里。有人可以帮助我吗?...”
pedirNum方法将始终返回负值,因为这是停止循环的方法。
因此,contar方法中的while-loop永远不会执行。
while(num >= 0)
在 pedirNum 方法中使用单独的变量来计算值。
Scanner sc = new Scanner(System.in);
int n, x = 0;
do{
System.out.println("Introduce un número");
n = sc.nextInt();
if(n < 0){
System.out.println("Has introducido un número negativo");
} else x++;
}while(n >= 0);
return x;
然后,简化main方法。
System.out.println("Se han introducido "+pedirNum()+" números positivos");
输出
Introduce un número
5
Introduce un número
10
Introduce un número
-1
Has introducido un número negativo
Se han introducido 2 números positivos