Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在这种情况下,如何正确检查用户输入是否为整数?_Java_Integer - Fatal编程技术网

Java 在这种情况下,如何正确检查用户输入是否为整数?

Java 在这种情况下,如何正确检查用户输入是否为整数?,java,integer,Java,Integer,我有一个任务,我必须使用递归函数计算用户确定的斐波那契数,然后再次使用迭代函数,然后比较每次计算所需的时间 我已经全部完成了,除了无法检查有效的整数输入(请参见reader()method) import java.util.Scanner; 导入java.lang.System; 导入java.util.concurrent.TimeUnit; /* 类别:斐波那契数 描述:这个类将从用户那里获取一个整数,表示他们想要计算多少斐波那契数 并打印。然后,它将使用递归函数计算该值,并输出斐波那契序

我有一个任务,我必须使用递归函数计算用户确定的斐波那契数,然后再次使用迭代函数,然后比较每次计算所需的时间

我已经全部完成了,除了无法检查有效的整数输入(请参见
reader()
method)

import java.util.Scanner;
导入java.lang.System;
导入java.util.concurrent.TimeUnit;
/*
类别:斐波那契数
描述:这个类将从用户那里获取一个整数,表示他们想要计算多少斐波那契数
并打印。然后,它将使用递归函数计算该值,并输出斐波那契序列。会的
然后计算执行计算和输出所用的时间(以纳秒为单位),并将其输出
结果。然后,它将使用迭代函数(for循环)重复整个过程。这主要是为了
显示递归函数和迭代函数之间的时间差。
*/
公共类斐波那契数{
私有静态int n1=0,n2=1;//前两个斐波那契数(无需计算)。
/*
方法:主
描述:程序的主要方法。这将向用户介绍程序以及递归和迭代函数
对于递归函数,它调用reader函数来获取表示
要打印/计算的斐波那契数,然后将其传递给递归函数。它还计算并输出
完成递归函数所用的时间(以纳秒为单位)。在调用迭代函数之前
将先前定义的代表斐波那契序列前两个数字的变量重置为其
在递归函数中更改原始值之后。在调用并完成
迭代函数,然后退出程序。
用法:FibonacciNumbers类中的主要方法
参数:字符串参数[]
返回类型:void
*/
公共静态void main(字符串参数[]){
System.out.println();//空行,用于输出格式设置。
System.out.println(“欢迎使用斐波那契序列递归/迭代比较程序!”;//欢迎消息。
System.out.println();//空行,用于输出格式设置。
System.out.println(“递归函数:”;//介绍递归函数。
int n=reader();//调用reader函数。
long startTime=System.nanoTime();//在递归函数开始时获取并存储时间。
fibSeriesRec(n);//调用递归函数。
long-endTime=System.nanoTime();//在递归函数结束时获取并存储时间。
long-timeappeased=endTime-startTime;//计算递归函数期间经过的总时间。
System.out.println();//空行,用于输出格式设置。
System.out.println(“递归函数的运行时间:“+timeappeased+”纳秒”);//打印递归函数运行期间的总时间。
System.out.println();//空行,用于输出格式设置。
n1=0;//重置Fibonacci序列的第一个数。
n2=1;//重置斐波那契序列的第二个数。
System.out.println(“迭代函数:”;//引入迭代函数。
fibSeriesIte();//调用迭代函数。
System.exit(0);//退出程序。
}
/*
方法:读卡器
描述:从用户处读取整数n以表示要计算/打印的斐波那契数,然后返回n。
用法:在main和fiberriesite方法中调用
参数:无
返回类型:整数
*/
私有静态int读取器(){
Scanner Scanner=new Scanner(System.in);//创建新的Scanner对象以扫描用户输入。
System.out.println(“您希望生成多少斐波那契数?”:”;//提示用户输入数字。
int n=scanner.nextInt();//读取用户输入的数字并存储为整数。
如果(!scanner.hasNextInt()| | n 0){//如果用户输入的数字大于0。。。
System.out.print(n1+“”);//按顺序打印下一个斐波那契数。
int sum=n1+n2;//计算斐波那契序列中前两个数字的和。
n1=n2;//将第一个数字的值设置为第二个数字(将第一个数字移动到上一个数字的计算中添加)。
n2=sum;//将第二个数字的值设置为前两个数字的和(将第二个数字移动到上一个数字的计算中)。
fibSeriesRec(n-1);//调用以重新启动递归函数并将n减少1。
}
}
/*
方法:纤锌矿
Description:调用reader方法以获取用户输入的整数,该整数表示要在
Fibonacci序列。然后将使用for循环迭代计算并输出Fibonacci序列。经过的时间
在for循环期间,将计算并输出for循环。
用法:在main方法中调用
参数:无
返回类型:void
*/
私有静态void fibSeriesIte(){
int n=reader();//调用reader函数。
long startTime=System.nanoTime();//获取并存储迭代函数开始时的时间。

对于(int i=1;i您使用不同的函数和 方法。如果需要,请使用scanner类获取用户输入 在特定数字之间生成斐波那契。如果要 从0和1开始。将扫描仪类放入try-catch和handle中 例外情况

    Scanner scanner = new Scanner(System.in);
int number = 1;

while(true)
{
    try
    {
        option = scanner.nextInt();
    }
    catch (InputMismatchException exception)
    {
        System.out.println("Integers only, please.");
     //Use a  .next() token to escape the infinite loop
    }
}
然后为For循环和 您的Fi基本业务逻辑
    Scanner scanner = new Scanner(System.in);
int number = 1;

while(true)
{
    try
    {
        option = scanner.nextInt();
    }
    catch (InputMismatchException exception)
    {
        System.out.println("Integers only, please.");
     //Use a  .next() token to escape the infinite loop
    }
}
 for (int i = 1; i <= n; i++) { // for loop that will run n times (number of Fibonacci numbers desired by user).

        System.out.print(n1 + " "); // print next Fibonacci number in sequence.

        int sum = n1 + n2; // calculate sum of previous two numbers in Fibonacci sequence.

        n1 = n2; // set value of first number to second number (move first number that will be added in calculation of next number in sequence over).

        n2 = sum; // set value of second number to the sum of previous two numbers (move second number that will be added in calculation of next number in sequence over).

    }
 boolean isIntInput = scanner.hasNextInt();
 int n=-1;
 if (isIntInput ) { 
    n = scanner.nextInt();
 }else {
  //invalid input
 }