繁体   English   中英

如何判断整数只有2位数字?

[英]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() ,或者只是测试int1099之间(包括1099 (包括1099 )。

在编程语言中,有些东西称为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM