我如何正确使用java.lang.Math?

时间:2014-09-28 21:15:26

标签: java math multiplication

我在COMP 110课程中介绍Java。这个特定的程序与课程无关,但有助于我自己对Java的理解。

我相信我已导入该工具以允许程序使用" java.lang.Math来计算基本数学运算;"

我理解*是乘法,/是除法,+是加法, - 是减法,%是找到余数。

程序的最后一行给出了错误消息:

squared.java:14: operator * cannot be applied to java.lang.String,java.lang.String

我不知道为什么,因为我导入了Math语言,这使我能够在输入" value * value"

时使用*来乘以值变量
import java.util.Scanner;

import java.lang.Math;

public class squared {

    public static void main(String[] args) {

        Scanner number = new Scanner(System.in);

        System.out.println("What number do you want to find the square of?");

        String value = number.nextLine();

        System.out.println("The square of the number" + value + "is" + value * value);

    }
}

3 个答案:

答案 0 :(得分:1)

是的,您必须先将其转换为Integer,Double,Float等,以便对其进行乘法运算。所以就这样做

int v = Integer.parseInt(value.trim());

然后

System.out.println("The square of the number"+v+"is"+ (v * v));

同样使用运算符与数学库无关。数学库的使用方式如下:

  double d = Double.parseDouble(value.trim());
  Math.pow(d,2.0); //which does the same thing above

答案 1 :(得分:0)

这个计划有两种方法 -

1)将输入读作String,然后将其转换为int

2)将输入读作int(或double?)本身。

以下代码显示了如何将输入读取为int并执行操作。 请注意sysout语句中的代码更改(value*value)。当您将任何值连接到字符串时,它将被视为字符串,因此您将收到错误。将其放在括号中,以便在连接之前执行实际的value*value操作。

public class squared {

          public static void main(String[] args){

                 Scanner number = new Scanner(System.in);

                 System.out.println("What number do you want to find the square of?");

                 int value = number.nextInt();

                 System.out.println("The square of the number"+value+"is"+ (value * value));

          }      
}

谈到Math.pow(),它在这里没有任何不同的用途。使用它与你在这里完成的方式相同。

答案 2 :(得分:0)

首先,您无需导入java.lang.Math。所有java.lang库已经存在。此外,您无需使用Math库进行操作。您可以将它用于Math.sin()之类的内容来查找角度的正弦值,或Math.pow()来获取一个数字与另一个数字的幂。如果您需要java.lang.Math的完整使用列表,请点击以下链接:http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html

您可能希望将输入存储为double,因此您可能希望使用number.nextLine()而不是number.nextDouble(),并将其存储为double,如下所示。

double value = number.nextDouble();

您将值存储为字符串,因此计算机将输入作为引号读取,如“cat”,而不是数字。它不起作用,因为你试图做的就像说 "cat" * "dog."

课堂上好运!