程序要求输入数字,并计算直到输入负数

问题描述 投票:0回答:2

我开始在课堂上学习方法,但进展并不顺利(循环也有一些问题,但那是另一个故事了)。

我正在尝试做一个要求数字的练习,直到我引入一个负数。

我创建了程序,但计数器不工作,我不知道为什么,我确信这是一个愚蠢的问题,但我看不到它在哪里。有人可以帮我吗?

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;
     }
}

我现在正在尝试将早期的练习分成方法。程序应该要求我输入数字,直到我输入一个负数,然后它应该显示我输入了多少正数。

java loops methods counter
2个回答
0
投票

错误:

while(num >= 0){
  cont++;
}

这是无限循环。您应该将其替换为

if

您的计数器方法

contar()
未计数。直到将其移至
do-while
循环。并且您可以检查参数值只能是正数。

用于计数数字的变量不应该是方法的局部变量,否则每次调用方法时它都将始终为 0,但您需要在每个输入的数字的循环中调用它。

如果你想将你的程序拆分为方法,那么你应该知道你的方法

perdirNum()
是无用的,它有一个错误,只返回负数并且不计算它。所以可以删除。

这些是您必须在代码中修复才能重写的主要错误。


0
投票

“...我创建了程序,但计数器不工作,我不知道为什么,我确定这是一个愚蠢的问题,但我看不到它在哪里。有人可以帮助我吗?...”

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
© www.soinside.com 2019 - 2024. All rights reserved.