我是Java的新手,我不知道如何解决我在尝试运行此代码时遇到的错误:
import java.util.Scanner;
public class P3_3
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Please enter a number: ");
int number = in.nextInt();
if (number < 0) number *= -1;
if (number >= 10 && number < 100)
{
number = 2;
}
else if (number >= 100 && number < 1000)
{
number = 3;
}
else if (number >= 1000 && number < 10000)
{
number = 4;
}
else if (number >= 10000 && number < 100000)
{
number = 5;
}
else if (number >= 100000 && number < 1000000)
{
number = 6;
}
else if (number >= 1000000 && number < 10000000)
{
number = 7;
}
else if (number >= 10000000 && number < 100000000)
{
number = 8;
}
else if (number >= 100000000 && number < 1000000000)
{
number = 9;
}
else
{
System.out.println("Number is greater than 10 billion.");
}
System.out.printf("%d has ", number + "digits.");
}
}
我试图通过检查该号码是>= 10, >= 100
等来打印该号码的位数...等等...
我运行代码并且我能够输入一个int但是一旦我输入它并按回车所有我得到它一个错误,并且似乎看不出我做错了什么。任何人都可以开导我吗?
答案 0 :(得分:2)
问题在于:
System.out.printf("%d has ", number + "digits.");
%d
格式说明符需要将整数作为第二个参数传递给printf
,但是通过连接number
和"digits."
,您实际上传递了String
}。
修正版:
System.out.printf("has %d digits ", number);
请注意,您无法同时打印原始数字和位数,因为您在number
变量中用另一个覆盖了一个。也许使用两种不同的。
答案 1 :(得分:0)
将您的上一次printf更改为:
System.out.printf("number has %d digits ", number);
尝试将所有字符串附加在一起并使用说明符,即
System.out.printf("blah %d blah ", value).
答案 2 :(得分:0)
正如其他人所说,问题出在印刷声明中。一个更好的方法,而不是使用所有if语句,你应该使用log10方法:
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.print("Please enter a number: ");
int number = in.nextInt();
if (number < 0) number *= -1;
System.out.printf("%d has %d digits\n", number, (int)Math.log10(number) + 1 );
}