Java 给定三个整数a、b和n,输出以下序列:a+;20b,a和x2B;20b和x2B;21b,…,a+;20b和x2B;21b++;2n−;1ba和x2B;20b,a和x2B;20b和x2B;21b,…,a+;20b和x2B;21b++;2n−;1b

Java 给定三个整数a、b和n,输出以下序列:a+;20b,a和x2B;20b和x2B;21b,…,a+;20b和x2B;21b++;2n−;1ba和x2B;20b,a和x2B;20b和x2B;21b,…,a+;20b和x2B;21b++;2n−;1b,java,loops,Java,Loops,限制条件: 0≤T≤五百 0≤a、 b≤五十 一,≤N≤十五 样本输入: 2 0 2 10 5 3 5 样本输出 2 6 14 30 62 126 254 510 1022 2046 8 14 26 50 98 这在我的IDE中有效,但当我在hackerrank.com的在线编辑器中尝试时,它会引发一个异常: 线程“main”java.util.NoSuchElementException中出现异常:找不到行 java.util.Scanner.nextLine(Scanner.java

限制条件:

  • 0≤T≤五百
  • 0≤a、 b≤五十
  • 一,≤N≤十五
样本输入:

2
0 2 10
5 3 5
样本输出

2 6 14 30 62 126 254 510 1022 2046
8 14 26 50 98
这在我的IDE中有效,但当我在hackerrank.com的在线编辑器中尝试时,它会引发一个异常:

线程“main”java.util.NoSuchElementException中出现异常:找不到行 java.util.Scanner.nextLine(Scanner.java:1585)位于 Solution.main(Solution.java:24)

请解释为什么会发生这种情况。谢谢

import java.io.*; 
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        int[] a = new int[10];
        int[] b = new int[10];
        int[] n = new int[10];
        int t;
        int sum;
        StringBuilder sb =new StringBuilder();

        Scanner iput = new Scanner(System.in);

        t = Integer.parseInt(iput.nextLine());

        if (t <= 500) {

            for (int i = 0; i < t; i++) {
                a[i] = Integer.parseInt(iput.next());
                b[i] = Integer.parseInt(iput.next());
                n[i] = Integer.parseInt(iput.next());
                iput.nextLine();
            }
        } else
            System.out.println("Enter value less than 500");

        if (t <= 500) {

            for (int i = 0; i < t; i++) {

                if (a[i] <= 50 && b[i] <= 50 && n[i] <= 15 && n[i] != 0) {

                    for (int j=0;j<n[i];j++) {

                        sum = a[i];

                        for (int k = j;k >=0; k--) {

                            sum+=Math.pow(2,k)*b[i];
                        }
                        sb=sb.append(Integer.toString(sum)).append(" ");
                    }
                    System.out.println(sb);
                    sb.delete(0,sb.toString().length());
                } else
                    System.out.println("Enter the values within the allowed limits");
            }
        }
    }    
}
import java.io.*;
导入java.util.*;
公共类解决方案{
公共静态void main(字符串[]args){
int[]a=新的int[10];
int[]b=新的int[10];
int[]n=新的int[10];
int t;
整数和;
StringBuilder sb=新的StringBuilder();
扫描仪iput=新扫描仪(System.in);
t=Integer.parseInt(iput.nextLine());

如果(tRemove
iput.nextLine();
在第24行,这样就不会发生额外的读取。

Remove
iput.nextLine();
在第24行,这样就不会发生额外的读取。

我认为下面的方法应该有效。因为t的值可以高达500,所以数组可以是int[]a=new int[t]或new int[500]

注意,如果您使用int[t],则在定义a、b和n之前获取t的值

import java.io.*; 
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        int[] a = new int[500];
        int[] b = new int[500];
        int[] n = new int[500];
        int t;
        int sum;
        StringBuilder sb =new StringBuilder();

        Scanner iput = new Scanner(System.in);

        t = Integer.parseInt(iput.nextLine());

        if (t <= 500) {

            for (int i = 0; i < t; i++) {
                a[i] = Integer.parseInt(iput.next());
                b[i] = Integer.parseInt(iput.next());
                n[i] = Integer.parseInt(iput.next());
            }
        } else
            System.out.println("Enter value less than 500");

        if (t <= 500) {

            for (int i = 0; i < t; i++) {

                if (a[i] <= 50 && b[i] <= 50 && n[i] <= 15 && n[i] != 0) {

                    for (int j=0;j<n[i];j++) {

                        sum = a[i];

                        for (int k = j;k >=0; k--) {

                            sum+=Math.pow(2,k)*b[i];
                        }
                        sb=sb.append(Integer.toString(sum)).append(" ");
                    }
                    System.out.println(sb);
                    sb.delete(0,sb.toString().length());
                } else
                    System.out.println("Enter the values within the allowed limits");
            }
        }
    }    
}
import java.io.*;
导入java.util.*;
公共类解决方案{
公共静态void main(字符串[]args){
int[]a=新的int[500];
int[]b=新的int[500];
int[]n=新的int[500];
int t;
整数和;
StringBuilder sb=新的StringBuilder();
扫描仪iput=新扫描仪(System.in);
t=Integer.parseInt(iput.nextLine());

如果(t我认为下面的方法应该有效。因为t的值可以高达500,所以数组可以是int[]a=new int[t]或new int[500]

注意,如果您使用int[t],则在定义a、b和n之前获取t的值

import java.io.*; 
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        int[] a = new int[500];
        int[] b = new int[500];
        int[] n = new int[500];
        int t;
        int sum;
        StringBuilder sb =new StringBuilder();

        Scanner iput = new Scanner(System.in);

        t = Integer.parseInt(iput.nextLine());

        if (t <= 500) {

            for (int i = 0; i < t; i++) {
                a[i] = Integer.parseInt(iput.next());
                b[i] = Integer.parseInt(iput.next());
                n[i] = Integer.parseInt(iput.next());
            }
        } else
            System.out.println("Enter value less than 500");

        if (t <= 500) {

            for (int i = 0; i < t; i++) {

                if (a[i] <= 50 && b[i] <= 50 && n[i] <= 15 && n[i] != 0) {

                    for (int j=0;j<n[i];j++) {

                        sum = a[i];

                        for (int k = j;k >=0; k--) {

                            sum+=Math.pow(2,k)*b[i];
                        }
                        sb=sb.append(Integer.toString(sum)).append(" ");
                    }
                    System.out.println(sb);
                    sb.delete(0,sb.toString().length());
                } else
                    System.out.println("Enter the values within the allowed limits");
            }
        }
    }    
}
import java.io.*;
导入java.util.*;
公共类解决方案{
公共静态void main(字符串[]args){
int[]a=新的int[500];
int[]b=新的int[500];
int[]n=新的int[500];
int t;
整数和;
StringBuilder sb=新的StringBuilder();
扫描仪iput=新扫描仪(System.in);
t=Integer.parseInt(iput.nextLine());

如果(t)这是一个在线练习(就像一个挑战!)。请建议一种完成它的方法。当我使用nextInt()时,为什么要使用
Integer.parseInt(iput.next())
而不是
iput.nextInt()
我无法以问题中指定的格式输入。而且它也不适用于自定义输入!!@NawinSS您不提供输入应该是您的错。这是一个在线练习(就像一个挑战!)。请建议一种完成方法。为什么使用
Integer.parseInt(iput.next())
而不是
iput.nextInt()
?当我使用nextInt()时我无法按问题中指定的格式输入。自定义输入也不适用!!@NawinSS建议不输入应该是你的错。谢谢,在我删除了那行之后它就可以了!!!但是你能解释一下幕后发生的事情吗?有没有更好的方法来回答这个问题!?因为显然这对我来说不起作用r所有的测试用例!!非常感谢任何帮助。谢谢。@NawinSS你能回答这个问题吗?我面临着同样的问题!谢谢在我删除了那一行之后它能起作用!!!但是你能解释一下幕后发生的事吗?有没有更好的方法来回答这个问题!?因为显然这对所有的测试用例都不起作用!!任何帮助都是非常感谢的泰德。谢谢。@NawinSS你能回答这个问题吗?我面临着同样的问题!