以下代码在我的 IDE 中工作,但在 hackerrank.com 提供的在线编辑器中无法工作



输入格式

每行输入将包含一个字符串,后跟一个整数。每个字符串最多包含 10 个字母字符,每个 整数将在 0 到 999 的包含范围内。

输出格式

在每行输出中应有两列:第一列包含字符串,并使用正好 15 个字符左对齐。 第二列包含整数,正好用 3 位数字表示; 如果原始输入少于三位数,则必须填充您的 输出的前导数字与零。

示例输入

java 100
cpp 65
python 50

示例输出

================================
java           100 
cpp            065 
python         050 
================================
import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            StringBuilder sb=new StringBuilder();
            int x=0,len=0;
            System.out.println("================================");
            for(int i=0;i<3;i++)
            {
                boolean bool = true;
                while(bool){
                    sb=sb.append(sc.next());
                    len=sb.toString().length();
                    if(len>10) {
                        sb.delete(0,len);
                        System.out.println("Enter zero - ten character string");
                    }
                    else
                        bool = false;
                }
                bool= true;

                while(bool){
                    x=Integer.parseInt(sc.next());
                    sc.nextLine();
                    int l= Integer.toString(x).length();
                    if(l>3) {
                        System.out.println("Enter zero - three digit number");
                    }
                    else
                        bool = false;
                }

                System.out.printf("%1$-16s %2$03dn",sb,x);
                sb=sb.delete(0,len);
            }
            System.out.println("================================");
        }
    }

在每个字符串和数字之间打印了两个额外的空格字符。

尝试更换

System.out.printf("%1$-16s %2$03dn",sb,x);

System.out.printf("%1$-15s%2$03d n",sb,x);

此外,您应该删除行sc.nextLine();以避免额外的读取并导致过度。

最新更新