如何在java中添加名为numberOfDigits()的新方法?

如何在java中添加名为numberOfDigits()的新方法?,java,methods,Java,Methods,我有一个名为公共类ZeroCounter{的程序。我想给它添加一个名为numberOfDigits()的新方法,并在main()方法中添加一行来测试它。我应该怎么做?下面是代码的一小部分 public class ZeroCounter { public static void main(String[] args) { System.out.println("Enter a nonnegative number:"); Scanner keybo

我有一个名为公共类ZeroCounter{的程序。我想给它添加一个名为numberOfDigits()的新方法,并在main()方法中添加一行来测试它。我应该怎么做?下面是代码的一小部分

public class ZeroCounter   {
public static void main(String[] args)
    {
         System.out.println("Enter a nonnegative number:");
         Scanner keyboard = new Scanner(System.in);
         int number = keyboard.nextInt( ) ;

         System.out.println(number + " contains " + numberOfZeros(number) + " zeros.");
} // End of main
更新代码:

import java.util.*;

public class ZeroCounter   {
public static void main(String[] args)
    {
         System.out.println("Enter a nonnegative number:");
         Scanner keyboard = new Scanner(System.in);
         int number = keyboard.nextInt( ) ;

         System.out.println(number + " contains " + numberOfZeros(number) + " zeros.");
         int theDigit = keyboard.nextInt( ) ;    //added for the digitcount
         int digitCount = numberOfDigits(number, theDigit); 

    }// End of main

// * * * * Recursive Method * * * * 
public static int numberOfZeros(int n)  {
n = Math.abs(n); // Make sure the number is not negative. 

// 1. STOPPING CONDITION: Number has only only digit. 
if ( n < 10 )  {
    // if( n == 0 ) return 1;   else return 0;

    return n==0 ? 1:  0 ; // Conditional  operator.

} // end of the outer if block handling the stopping condition.


// 2. Else handle the case of two or more digits using recursion.
else {

    return n%10 == 0 ? 1 + numberOfZeros(n/10):  numberOfZeros(n/10) ; // Conditional  operator.


    // if (n%10 == 0) return 1 + numberOfZeros(n/10);
    // else return numberOfZeros(n/10);
} // end of outer else block 


} // end of recursive method method numberOfZeros. * * * * * * * * 


public static int numberOfDigits(int n, int digit) {
n = Math.abs(n); // Make sure the number is not negative.  
if ( n < 10 )  { 
     if( n == digit )    return 1;  
else           return 0; 
} // end of the outer if block handling the stopping condition. 
// 2. Else handle the case of two or more digits using recursion. 
else {   
      if (n%10 == digit) return 1 + numberOfDigits(n/10, digit);
        else return numberOfDigits(n/10, digit); 
} // end of outer else block 
} // end of recursive method method numberOfZeros. * * * * * * * *  
}
import java.util.*;
公共类零计数器{
公共静态void main(字符串[]args)
{
System.out.println(“输入一个非负数:”);
扫描仪键盘=新扫描仪(System.in);
int number=keyboard.nextInt();
System.out.println(number+“包含”+numberOfZeros(number)+“zeros”);
int theDigit=keyboard.nextInt();//为digitcount添加
int digitCount=位数(数字,数字);
}//干管末端
//****递归方法****
公共静态整数零(整数n){
n=Math.abs(n);//确保数字不是负数。
//1.停止条件:数字只有数字。
如果(n<10){
//如果(n==0)返回1;否则返回0;
返回n==0?1:0;//条件运算符。
}//外部if块处理停止条件的结束。
//2.Else使用递归处理两个或多个数字的情况。
否则{
返回n%10==0?1+numberOfZeros(n/10):numberOfZeros(n/10);//条件运算符。
//如果(n%10==0)返回1+numberofzero(n/10);
//否则返回数字0(n/10);
}//外部else块的结束
}//递归方法numberOfZeros结束。********
公共静态整数位数(整数n,整数位数){
n=Math.abs(n);//确保数字不是负数。
如果(n<10){
如果(n==位)返回1;
否则返回0;
}//外部if块处理停止条件的结束。
//2.Else使用递归处理两个或多个数字的情况。
否则{
如果(n%10==位)返回1+numberOfDigits(n/10,位);
否则返回numberOfDigits(n/10,数字);
}//外部else块的结束
}//递归方法numberOfZeros结束。********
}
它应该是:

public class ZeroCounter {

    public static int numberOfDigits(int number) {
        //- Implementation goes here.
    }

    public static void main(String[] args) {
        int number;
        //- Initialize number variable.
        System.out.println("numberOfDigits(" + number + ")=" + numberOfDigits(number));
    }
}

不过,在继续之前,您可能需要先阅读更多关于Java以及类、方法和函数如何工作的知识。

尝试使用此方法计算整数的位数:-

 public int numberOfZeros(int number){
    return ((int) Math.log10(number) + 1);
}
或者你可以试试这个代码

      //Declare input as scanner
        Scanner input = new Scanner(System.in);

        //Take input
         System.out.println("Enter Number :");
         no = input.nextInt();
         System.out.println("Enter digit :");
         digit = input.nextInt();

        //add while loop
        while(no>0)
        {
            m=no%10;
            if(m==digit)
                oc++;
            no=no/10;
        }

        System.out.println("Digit occurred "+oc+" times");
试试这个……)

更新的代码..

import java.util.*;
public class ZeroCounter 
{

public static int numberOfDigits(int number,char d) 
{           
    //to get a char array of digits of number
    char[] n=Integer.toString(number).toCharArray();
    int r=0;
    for(char x:n)
    {
        if(x==d)
            r++;
    }
    return r;
}

public static void main(String[] args)
{
    int number;
    char digit;
    boolean flag=false;
    Scanner Keyboard=new Scanner(System.in);
    try{
    System.out.print("Enter the non-negative number: ");
    number=Keyboard.nextInt();

    //to check number is positive or not
    if(number<=-1)
    throw new Exception();
    System.out.println(number + " contains " + numberOfDigits(number,'0') + " zeros.");
    System.out.print("Enter the digit: ");

    //to take only one letter as input
    digit=Keyboard.next(".").charAt(0);

    //to check input is digit or not
    if(!Character.isDigit(digit))
    throw new Exception();
    System.out.println("Number of digits(" + digit + ")=" + numberOfDigits(number,digit));
    }
       //to catch all exceptions
    catch(Exception e)
    {  
        System.out.println("\n You have entered invalid input..");
    }
}
}
import java.util.*;
公共类零计数器
{
公共静态整数位数(整数,字符d)
{           
//获取数字的字符数组的步骤
char[]n=Integer.toString(number.toCharray();
int r=0;
用于(字符x:n)
{
如果(x==d)
r++;
}
返回r;
}
公共静态void main(字符串[]args)
{
整数;
字符数字;
布尔标志=假;
扫描仪键盘=新扫描仪(System.in);
试一试{
System.out.print(“输入非负数:”);
number=键盘.nextInt();
//检查数字是否为正数

if(numberstart)首先是如何添加名为main()的函数的?过程基本相同,但该函数将被称为numberOfDigits()而不是main()。如果要在主函数中使用,则您的方法必须是静态的。若要获取数字中的数字计数,请将其转换为字符串,然后获取其长度。您好,谢谢!如果我已经有一个公共静态int numberOfZeros(int n){n=Math.abs(n);//1.停止条件:数字只有数字。if(n<10){//if(n==0)返回1;else返回0;我还可以添加另一个公共静态int numberOfDigits(int number){?是的,您可以添加任意数量(几乎)的新方法。其中一些方法甚至可以有完全相同的名称,因为它们只是在参数(其类型和/或计数)上有所不同——这称为“方法重载”。例如,您可以有一个以int为参数的公共静态int numberOfDigits(int number),另一个公共静态int numberOfDigits(String number)以字符串为参数并对其中的数字进行计数(可能跳过字母、括号等其他字符).ok,所以我将这部分添加到了我的代码public static int numberOfDigits(int number){System.out.println(“输入一个非负整数”);Scanner keyboard=new Scanner(System.in);int number=keyboard.nextInt();System.out.println(“指定要计数的数字。”+“\n输入一个从0到9的数字”);但它都以红色突出显示。您知道为什么吗?它似乎遗漏了return语句。请看“public static”后面的“int”。它告诉我们,方法numberOfDigits必须返回int类型的值。添加“return number”在方法的末尾,body会起作用。虽然这个方法不起作用,但我想,你确实希望它起作用……你应该使用你的方法(比如numberOfDigits numberOfZeros)作为简单的代码,它只做方法名称所说的——计算数字或零的数量。所有与读取用户输入有关的代码都应该放在其他地方(例如在main方法中)。嗨。谢谢!这是我到目前为止得到的,但它看起来不正确(请查看我发布的更新的qs)System.out.println(“numberOfDigits(”+number+“”=“+numberOfDigits(number));以红色突出显示。错误为“类ZeroCounter中的方法numberOfDigits无法应用于给定类型;必需:int,int.Found int”
public class ZeroCounter {

    public static int numberOfDigits(int number) 
    {
        //return Integer.toString(number).length();
        return String.valueOf(number).length();
    }

    public static void main(String[] args)
    {
        int number;
        Scanner Keyboard=new Scanner(System.in);
        System.out.print("Enter the number: ");
        number=Keyboard.nextInt();
        System.out.println("numberOfDigits(" + number + ")=" + numberOfDigits(number));
    }
}
import java.util.*;
public class ZeroCounter 
{

public static int numberOfDigits(int number,char d) 
{           
    //to get a char array of digits of number
    char[] n=Integer.toString(number).toCharArray();
    int r=0;
    for(char x:n)
    {
        if(x==d)
            r++;
    }
    return r;
}

public static void main(String[] args)
{
    int number;
    char digit;
    boolean flag=false;
    Scanner Keyboard=new Scanner(System.in);
    try{
    System.out.print("Enter the non-negative number: ");
    number=Keyboard.nextInt();

    //to check number is positive or not
    if(number<=-1)
    throw new Exception();
    System.out.println(number + " contains " + numberOfDigits(number,'0') + " zeros.");
    System.out.print("Enter the digit: ");

    //to take only one letter as input
    digit=Keyboard.next(".").charAt(0);

    //to check input is digit or not
    if(!Character.isDigit(digit))
    throw new Exception();
    System.out.println("Number of digits(" + digit + ")=" + numberOfDigits(number,digit));
    }
       //to catch all exceptions
    catch(Exception e)
    {  
        System.out.println("\n You have entered invalid input..");
    }
}
}