[英]How can I tell that an integer is only 2 digits long?
我需要编写一个Java程序来提示用户输入一个正好由2位数字组成的整数。 然后在屏幕上显示其各个数字的总和。
我被困在这里。 我究竟做错了什么?
import java.util.Scanner ;
public class ss {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int x;
System.out.println("Please Enter a number consists of 2 digits only : ");
x = input.nextInt();
x.length() == 2;
}
}
最后一行包含错误!
假设x
为正,检查它是否恰好有两位数字的简单方法是:
if (x >= 10 && x <= 99) {
// x contains exactly two digits
}
变量x
的类型为int
,因此您不能在其上调用方法。 您需要将输入读取为String
或将int
转换为String
然后调用length()
,或者只是测试int
在10
到99
之间(包括10
和99
(包括10
和99
)。
在编程语言中,有些东西称为L值和R值。 在赋值操作中,L值可以接受R值作为输入。 这来自典型的布局,该布局在赋值运算符的左侧具有L值,在赋值运算符的右侧具有R值。
x = 5;
x是L值,5是R值。 可以为x分配5。
但是,函数返回R值。 因此,可以这样做
x = a.length();
但不可能做到
a.length() = x;
因为您不能为函数的返回赋值。
从根本上说,L值是名字代表的值 ,但R-值值或在值的回归分析的结果,当物品。
现在,如果您使用了equals比较运算符,则两个值都必须是R值,因为没有执行赋值操作
a.length == x
很好,因为它不是赋值运算符=
,而是比较运算符==
。
出现错误是因为x
是原始图元,而不是对象。 只有对象具有诸如length()
类的方法。 一种确定整数长度的简便方法是使用Math.log()
。
public int length(int n){
if (n == 0) return 1; // because Math.log(0) is undefined
if (n < 0) n = -n; // because Math.log() doesn't work for negative numbers
return (int)(Math.log10(n)) + 1; //+1 because Math.log10 returns one less
//than wanted. Math.log10(10) == 1.
}
此方法使用以下事实:整数a的底数b对数与整数a的长度有关。
或者,如果您不知道如何使用方法,则可以这样做(假设n是要检查的整数):
int length = (n == 0)? 1: ((n > 0)? (int) (Math.log(n)) + 1: (int) (Math.log(-n)) + 1);
或者,如果您不使用三元运算符,则可以将其扩展:
int length = -1; //placeholder; might not need it.
if (n == 0) length = 1;
else if (n > 0) length = (int) (Math.log(n)) + 1;
else length = (int) (Math.log(-n)) + 1;
您无法通过调用int
的方法来找到int
的长度,但可以找到String
的长度。
尝试将int
转换为String
并找到其长度:
boolean isTwoDigits = x.toString().length() == 2;
你不能在整数上调用长度只是写
if(x>=10 && x<=99)
{
//write your code here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.