给定一个整数数组,检查给定产品

时间:2016-09-27 20:14:14

标签: java

http://www.practice.geeksforgeeks.org/problem-page.php?pid=667 您可以在上面的链接上找到Qusetion。为什么它没有显示我所需的输出。事实上,我只是将N的值作为数组大小,P =数组中所需的输出数组值但是在获取所有值之后它没有显示任何结果。

package practice;

import java.util.Scanner;
public class Practice {

    public static void main(String a[])
    {
        Scanner in =new Scanner(System.in);
        int N = in.nextInt();
        int[] arr = new int[N];
        int P = in.nextInt();

        for(int i =0 ; i<=N ; i++){
            arr[i] = in.nextInt();
        }
        for(int j=0 ; j<arr.length;j++){
            for(int k = j+1;k>=j;++k){
                if(arr[j]*arr[k]==P){
                    System.out.println("Yes");
                }else{
                    System.out.println("No");
                }
            }
        }
    }
}
  

运行时错误   线程&#34; main&#34;中的例外情况java.util.NoSuchElementException   在java.util.Scanner.throwFor(Scanner.java:907)   在java.util.Scanner.next(Scanner.java:1530)   在java.util.Scanner.nextInt(Scanner.java:2160)   在java.util.Scanner.nextInt(Scanner.java:2119)   在GFG.main(File.java:14)

3 个答案:

答案 0 :(得分:1)

而不是这个for循环

f

你应该有这个:

for(int k = j+1;k<=j;++k)

在您的版本中,您从for(int k = j+1;k< arr.length;++k) 开始k,根据定义,它大于j+1,因此您永远不会进入该循环的内部。

还有这一行:

j

应该是这样的:

for(int i =0 ; i<=N ; i++)

这是因为您正在创建一个大小为for(int i =0 ; i< N ; i++) 的数组,但将其值设置为N次。

答案 1 :(得分:0)

for(int k = j + 1; k <= j; ++ k){

如果J为10,则K从11开始,其自动打破条件K <= J,并且内循环从不运行。

答案 2 :(得分:0)

扫描程序抛出了您的运行时错误。有时,Java Scanner可以获取换行符,这会引发运行时异常。尝试使用BufferedReaderBufferedReader in = new BufferedReader(new InputStreamReader(System.in));

另外,如果您正在填充数组,请记住数组从索引0转到array.length-1。当您创建一个类似:int[] arr = new int[N];的数组时,您将获得一个新的int N个索引数组。由于第一个索引为0,因此最终索引为N-1。因此,在fork = N循环中,索引arr[i]比最大索引大1。使用for(int i = 0; i < N; i++){...}可以防止这种情况发生。