0

我需要编写一个 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;
   }
}

最后一行包含错误!

4

6 回答 6

8

假设这x是肯定的,检查它是否正好有两位数字的简单方法是:

if (x >= 10 && x <= 99) {
    // x contains exactly two digits
}
于 2013-11-01T16:10:39.197 回答
1

该变量x是 type int,因此您不能在其上调用方法。您需要将输入读取为 aString或将 the 转换intStringthen call length(),或者只测试 theint是否介于10and之间99,包括在内。

于 2013-11-01T16:11:30.127 回答
0

你不能通过int调用它的方法来找到它的长度,但是你可以找到它的长度String

尝试将其转换int为 aString并找到它的长度:

boolean isTwoDigits = x.toString().length() == 2;
于 2013-11-04T23:04:50.610 回答
0

你的错误是因为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;
于 2013-11-01T16:22:15.680 回答
0

在编程语言中,有称为 L 值和 R 值的东西。在赋值操作中,L 值可以接受 R 值作为输入。这来自典型的布局,在赋值运算符的左侧有 L 值,在赋值运算符的右侧有 R 值。

x = 5;

x 是 L 值,5 是 R 值。可以将 5 分配给 x。

但是,函数返回 R 值。因此,可以这样做

x = a.length();

但这是不可能的

a.length() = x;

因为您不能为函数的返回值赋值。

从根本上说,L-values 是代表value的名称,但 R-values 是在分析时会返回values的或项目。

现在,如果您使用等于比较运算符,则两个值都必须是 R 值,因为没有执行赋值

a.length == x

很好,因为它不是赋值运算符=,而是比较运算符之一==

于 2013-11-01T16:16:27.533 回答
0

你不能在整数上调用长度只是写

if(x>=10 && x<=99)
{
//write your code here
}
于 2017-01-07T07:47:24.550 回答