如何正确使用math.pow java函数?

时间:2016-03-25 14:56:37

标签: java

这是我尝试做的事情: 从用户那里获得两个输入并验证它们。 1是一个介于1和20之间的随机数,另一个是它应该乘以的次数(1到10之间的数字,我通过取幂表示)

我不明白 - math.pow只适用于双打?此外,用户是否可能输入"错误"值而不是终止,程序再次请求输入?

我有这个:

import java.util.Scanner;

public class P01Multiplicador {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("insert number and how many times it will multiply itself over");
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int nReps = in.nextInt();

    if(n<1 || n>20 || nReps<1 || nReps>10){
        System.out.println("values are not accepted, please insert again");
    }
    else{
        do Math.pow(n, nReps);
        while(n>1 && n<20 && nReps>1 && nReps<20);

    }
    in.close();

}

它询问了这些值,但没有正常运行(或者根本就没有),我猜测我使用了错误的语句或错误的变量类型。 java新手在这里。建议?

4 个答案:

答案 0 :(得分:3)

您需要修复代码,使其成为有效的代码。

Math.pow使用双精度数,因为它根据输入产生大数和小数。例如即使4 ^ 20也不适合int

如果您想将结果舍入为long,可以使用Math.round(x)

答案 1 :(得分:3)

这样的事情:

boolean accepted = false;
do{
 System.out.println("insert number ....

 if(n<1 || n>20 || nReps<1 || nReps>10){
    System.out.println("values are not accepted, please insert again");
 }else{
    accepted = true;
 }
}while( !accepted )

答案 2 :(得分:1)

Math.pow接受双打并根据doc返回双倍。

为了让您的代码在输入错误的数字时获取新输入,您可以添加while(true)循环。

while(true){
    if(n<1 || n>20 || nReps<1 || nReps>10){
        System.out.println("values are not accepted, please insert again");
        n = in.nextInt();
        nReps = in.nextInt();
    }
    else{
        System.out.println(Math.pow(n, nReps));
        break;
    }
}

我已经使用break在给出正确的值时结束循环,但是你可以获得新的输入而不是破坏(从你的代码看来)。然后你需要有一些其他的休息条件,否则它将再次成为无限循环。

答案 3 :(得分:-1)

在主要方法中使用以下代码

    System.out.println("insert number and how many times it will multiply itself over");
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int nReps = in.nextInt();

    while (true) {
        if (n < 1 || n > 20 || nReps < 1 || nReps > 10) {
            System.out.println("values are not accepted, please insert again");
            System.out.println("insert number and how many times it will multiply itself over");
            n = in.nextInt();
            nReps = in.nextInt();
        } else {
            System.out.println("" + Math.pow(n, nReps));
            break;
        }

    }