0

嗨,我的程序应该显示在命令行输入的位数。它会这样做,但我对答案的格式是错误的。例如,当我输入“22”时,我得到的输出格式为“Number of Digits in0is2”。

谁能告诉我我做错了什么?

import java.util.Scanner;
public class test {





    public static void main(String args[]){
    int n;
    int i=0;

    System.out.print("Enter a Number:");
    Scanner scanner = new Scanner(System.in);
    n= scanner.nextInt();
    while(n>0)
    {
        n=n/10;
        i++;
    }

    System.out.println("Number of Digits in" +n +"is" +i);

}}
4

4 回答 4

2

变量n除以 10 直到变为 0,然后您尝试打印它,因此您得到错误的输出。

这应该可以正常工作

public class test {
public static void main(String args[]){
int n;
int i=0;

System.out.print("Enter a Number:");
Scanner scanner = new Scanner(System.in);
n= scanner.nextInt();
int backUp = n;
while(n>0)
{
    n=n/10;
    i++;
}

System.out.println("Number of Digits in " +backUp +" is " +i);

}}
于 2013-10-09T08:13:40.553 回答
1

您正在打印while 循环之后的n内容。0您需要将数字存储在另一个变量中并在打印时使用该变量。

尝试这个:

import java.util.Scanner;
public class Test2 {
    public static void main(String args[]){
    int m,n;
    int i=0;

    System.out.print("Enter a Number:");
    Scanner scanner = new Scanner(System.in);
    n= scanner.nextInt();
    m=n;
    while(n>0)
    {
        n=n/10;
        i++;
    }
    System.out.println("Number of Digits in " +m +" is " +i);
}
}

如果您不想使用m变量,则:

public static void main(String args[]){
    int n;
    int i=0;
    System.out.print("Enter a Number:");
    Scanner scanner = new Scanner(System.in);
    n= scanner.nextInt();
    System.out.print("Number of Digits in " +n +" is ");
    while(n>0)
    {
        n=n/10;
        i++;
    }
    System.out.println(i);
}
于 2013-10-09T08:16:25.263 回答
1

您的程序中存在逻辑错误。

例如,您在 while 循环中输入了“22”:

while (n>10){
    n = n/10;
    i++;
}

它只会继续划分 n 并增加 i 直到 n 达到 0。

在 while 循环结束时,n 为 0,不再是您输入的“22”。为了解决这个问题,你应该使用一个临时变量说'tmp'

public static void main(String args[]){
   int n;
   int i=0;
   int tmp = n;
   System.out.print("Enter a Number:");
   Scanner scanner = new Scanner(System.in);
   n= scanner.nextInt();
   while(tmp>0)
   {
       tmp=tmp/10;
       i++;
   }

    System.out.println("Number of Digits in " +n +" is " +i);
}

请注意,在您的初始代码中,您忘记在 System.out.println() 中添加空格

:D

于 2013-10-09T08:19:47.660 回答
0

像这样写代码。

import java.util.Scanner;
public class HelloWorld {

    public static void main(String args[]){
    int n;
    int i=0;

    System.out.print("Enter a Number:");
    Scanner scanner = new Scanner(System.in);
    n= scanner.nextInt();
    int a=n;
    while(n>0)
    {
        n=n/10;
        i++;
    }

    System.out.println("Number of Digits in=" +a +"is" +i);

}}

您将n值保存在另一个变量中,并且该变量使用变量打印i并执行代码并显示输出

于 2013-10-09T09:02:56.057 回答