如何将由空格缩进的用户输入存储到 String 数组中并将数字转换为 int 数组?

Posted

技术标签:

【中文标题】如何将由空格缩进的用户输入存储到 String 数组中并将数字转换为 int 数组?【英文标题】:How do I store the user input that is indented by a space into the String array and convert the number into int array? 【发布时间】:2021-05-22 17:04:27 【问题描述】:

我对编程并不陌生,但是在将用户输入存储到字符串数组并将其存储到 int 数组时遇到了问题。有人知道如何修复我的代码吗?或者有没有其他办法?

我想将此输入存储到一个单独的 int 数组和一个字符串数组中。

用户输入:

“T 3”

“V 4”

“问题 19”

预期结果:

num[0] = 3

num[1] = 4

num[2] = 19

商店[0] = "T"

商店[1] = "V"

商店[2] = "Q"

这段代码创建了一个越界的索引:

线程“main”java.lang.ArrayIndexOutOfBoundsException 中的异常:索引 1 超出长度 1 的范围

    import java.util.*;

    public class Main
    
        public static void main(String[] args) 
        
            // Variable Declarations & Initializations
            Scanner input = new Scanner(System.in);     
            int k = input.nextInt();
            int[] num = new int[k];
            String[] store = new String[k];
            for(int i = 0; i < k; i++)
            
                String[] paint = input.next().split(" ");
                store[i] = paint[0];
                num[i] = Integer.parseInt(paint[1]);
            //end loop
         //end main
      ]//end class
    

【问题讨论】:

如果您提供示例输入以及该输入的程序的预期行为将会很有帮助。否则很难理解你的问题。 如果输入数据被读取为input.next(),则没有任何内容可以被空格分割,默认情况下会读取一个单独的以空格分隔的标记。请改用input.nextLine() 【参考方案1】:

input.next() 仅在您采用 String 数据类型时才有效,但在这里您采用 int 作为数据类型,因此在这里不起作用。

【讨论】:

那么我如何将输入存储到两个不同的数组(int 和 string)中?【参考方案2】:

问题是您正在调用input.next(),它返回下一个标记,由空格分隔。因此,令牌本身不能包含任何空格。所以.split(" ")方法调用总会返回一个单元素数组,所以只有paint[0],没有paint[1]。目前尚不清楚您要在代码中实现什么;如果您扩展问题,您可能会得到更多答案。

更新:既然您已经向我们展示了您的意见和预期结果,我认为您需要做的是:

store[i] = input.next();
num[i] = input.nextInt();

【讨论】:

如何将输入存储到不同类型的数组(int 和 string)中? 非常感谢您的帮助!【参考方案3】:

试试这个

import java.util.*;
public class Main
    public static void main(String[] args)
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        int[] num = new int[k];
        String[] store = new String[k];
        for(int i=0; i<k; i++)
            String s = sc.nextLine();
            String str = sc.next();
            int number = Integer.parseInt(sc.next());
            num[i]=number;
            store[i]=str;
        
        for(int i=0; i<k; i++)
            System.out.println(store[i] +" "+num[i]);
        
    

【讨论】:

我很感激!!【参考方案4】:

检查这个。对您的代码进行了微小的更改。

import java.util.*;

public class Main

    public static void main(String[] args) 
    
        // Variable Declarations & Initializations
        Scanner input = new Scanner(System.in);     
        int k = Integer.parseInt(input.next());
        int[] num = new int[k];
        String[] store = new String[k];
        input.nextLine();
        for(int i = 0; i < k; i++)
        
            String paint[] = input.nextLine().split(" ");
            store[i] = paint[0];
            num[i] = Integer.parseInt(paint[1]);
        //end loop
     //end main
  //end class

【讨论】:

以上是关于如何将由空格缩进的用户输入存储到 String 数组中并将数字转换为 int 数组?的主要内容,如果未能解决你的问题,请参考以下文章

ng lint 中预期的空格缩进

设置 VSCode 缩进的空格数

如何输入带空格的字符串

idea 如何将生成 xml 文件时默认的缩进 2 个空格改变 4 个空格

C++ 如何将输入的数读入数组

如何在java中绘制一个正方形?