2013-10-09 55 views
0

嗨,我的程序应该显示在命令行输入的位数。它这样做,但我的答案格式是错误的。例如,当我输入“22”时,输出形式为“位数为0的数字”。简单的错误:输出格式

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

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

}} 
+0

,什么是你想要的输出? –

+0

@ Alya'aGamal:我认为输出应该是22中的数字位数是2 – NewUser

+1

如果你的问题解决了,接受一个答案。 – NewUser

回答

2

变量n是10,直至变为0 devided,然后尝试打印,因此你会得到错误的输出。

这应该做工精细

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

}} 
1

要打印的n这之后你是0 while循环。您需要将编号存储在另一个变量中,并在打印时使用该变量。

试试这个:

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

。在你的程序中的逻辑错误。

比如你输入“22”,然后在while循环:

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

它只会不断分裂n和提高我,直到n达到0.1

在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

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

}} 

您保存在其他变量的值ni变量可变印刷和执行代码,并显示输出