如何在Java中从一行输入中读取多个整数值?

如何在Java中从一行输入中读取多个整数值?,java,input,java.util.scanner,Java,Input,Java.util.scanner,我正在处理一个程序,我想允许用户在提示时输入多个整数。我曾尝试使用扫描仪,但发现它只存储用户输入的第一个整数。例如: 输入多个整数:1 3 5 扫描仪将仅获取第一个整数1。是否有可能从一行中获取所有3个不同的整数,并在以后使用它们?这些整数是我需要根据用户输入操作的链表中数据的位置。我无法发布我的源代码,但我想知道这是否可行。您可能正在寻找String.split(String regex)。将“”用于正则表达式。这将为您提供一个字符串数组,您可以将其单独解析为整数。如果您知道将得到多少整数,则

我正在处理一个程序,我想允许用户在提示时输入多个整数。我曾尝试使用扫描仪,但发现它只存储用户输入的第一个整数。例如:

输入多个整数:1 3 5


扫描仪将仅获取第一个整数1。是否有可能从一行中获取所有3个不同的整数,并在以后使用它们?这些整数是我需要根据用户输入操作的链表中数据的位置。我无法发布我的源代码,但我想知道这是否可行。

您可能正在寻找String.split(String regex)。将“”用于正则表达式。这将为您提供一个字符串数组,您可以将其单独解析为整数。

如果您知道将得到多少整数,则可以使用
nextInt()
方法

比如说

Scanner sc = new Scanner(System.in);
int[] integers = new int[3];
for(int i = 0; i < 3; i++)
{
    integers[i] = sc.nextInt();
}
Scanner sc=新扫描仪(System.in);
int[]整数=新的int[3];
对于(int i=0;i<3;i++)
{
整数[i]=sc.nextInt();
}

您希望将数字作为字符串输入,然后使用
String.split(“”)
获取3个数字

String input = scanner.nextLine();    // get the entire line after the prompt 
String[] numbers = input.split(" "); // split by spaces

数组的每个索引将保存一个数字的字符串表示形式,可以通过
Integer将其设置为
int
s。parseInt()

Scanner有一个名为hasNext()的方法:

试试这个

public static void main(String[] args) {
    Scanner in = new Scanner(System.in); 
    while (in.hasNext()) {
        if (in.hasNextInt())
            System.out.println(in.nextInt());
        else 
            in.next();
    }
}
默认情况下,扫描仪使用分隔符模式“\p{javaWhitespace}+”,该模式至少匹配一个空白作为分隔符。你不必做任何特别的事

如果要匹配空格(1或更多)或逗号,请将Scanner调用替换为

Scanner in = new Scanner(System.in).useDelimiter("[,\\s+]");

我一直在hackerrank/leetcode上使用它

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String  lines = br.readLine();    
        
    String[] strs = lines.trim().split("\\s+");
            
    for (int i = 0; i < strs.length; i++) {
    a[i] = Integer.parseInt(strs[i]);
    }
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
字符串行=br.readLine();
字符串[]strs=lines.trim().split(\\s+);
对于(int i=0;i
以下是如何使用扫描仪处理用户希望输入的任意数量的整数,并将所有值放入数组中。但是,仅当您不知道用户将输入多少整数时,才应使用此选项。如果您知道,只需使用
Scanner.nextInt()
获取整数的次数即可

import java.util.Scanner; // imports class so we can use Scanner object

public class Test
{
    public static void main( String[] args )
    {
        Scanner keyboard = new Scanner( System.in );
        System.out.print("Enter numbers: ");

        // This inputs the numbers and stores as one whole string value
        // (e.g. if user entered 1 2 3, input = "1 2 3").
        String input = keyboard.nextLine();

        // This splits up the string every at every space and stores these
        // values in an array called numbersStr. (e.g. if the input variable is 
        // "1 2 3", numbersStr would be {"1", "2", "3"} )
        String[] numbersStr = input.split(" ");

        // This makes an int[] array the same length as our string array
        // called numbers. This is how we will store each number as an integer 
        // instead of a string when we have the values.
        int[] numbers = new int[ numbersStr.length ];

        // Starts a for loop which iterates through the whole array of the
        // numbers as strings.
        for ( int i = 0; i < numbersStr.length; i++ )
        {
            // Turns every value in the numbersStr array into an integer 
            // and puts it into the numbers array.
            numbers[i] = Integer.parseInt( numbersStr[i] );
            // OPTIONAL: Prints out each value in the numbers array.
            System.out.print( numbers[i] + ", " );
        }
        System.out.println();
    }
}
import java.util.Scanner;//导入类以便我们可以使用Scanner对象
公开课考试
{
公共静态void main(字符串[]args)
{
扫描仪键盘=新扫描仪(System.in);
系统输出打印(“输入数字:”);
//这将输入数字并存储为一个完整的字符串值
//(例如,如果用户输入1 2 3,则输入=“1 2 3”)。
字符串输入=键盘.nextLine();
//这将在每个空间拆分字符串并存储这些字符串
//数组中名为numberstr的值(例如,如果输入变量为
//“1 2 3”,数字str将是{“1”、“2”、“3”})
字符串[]numberstr=input.split(“”);
//这使得int[]数组的长度与字符串数组的长度相同
//这就是我们将每个数字存储为整数的方式
//而不是当我们有值时的字符串。
int[]numbers=新int[numberstr.length];
//启动一个for循环,循环遍历
//数字作为字符串。
对于(int i=0;i
这很好用

int a=nextInt()
intb=nextInt()
int c=nextInt()


或者您可以在循环中读取它们

最好将整行作为字符串,然后使用StringTokenizer获取数字(使用空格作为分隔符),然后将它们作为整数解析。这将适用于一行中n个整数

    Scanner sc = new Scanner(System.in);
    List<Integer> l = new LinkedList<>(); // use linkedlist to save order of insertion
    StringTokenizer st = new StringTokenizer(sc.nextLine(), " "); // whitespace is the delimiter to create tokens
    while(st.hasMoreTokens())  // iterate until no more tokens
    {
        l.add(Integer.parseInt(st.nextToken()));  // parse each token to integer and add to linkedlist

    }
Scanner sc=新扫描仪(System.in);
列表l=新的LinkedList();//使用linkedlist保存插入顺序
StringTokenizer st=新的StringTokenizer(sc.nextLine(),“”);//空白是用于创建标记的分隔符
while(st.hasMoreTokens())//迭代直到没有更多的令牌
{
l、 add(Integer.parseInt(st.nextToken());//将每个标记解析为Integer并添加到linkedlist
}

在许多编码站点上使用此选项:

  • 情况1:当每行中的整数数给定时
假设给您3个测试用例,每行4个整数输入由空格分隔
1234
56788
1212

        int t=3,i;
        int a[]=new int[4];

        Scanner scanner = new Scanner(System.in);

        while(t>0)  
        {
            for(i=0; i<4; i++){
                a[i]=scanner.nextInt();
                System.out.println(a[i]);
            }   

        //USE THIS ARRAY A[] OF 4 Separated Integers Values for solving your problem
            t--;
        }
请注意,您需要首先修剪():
trim().split(\\s+”)
-否则,例如,拆分
abc
将首先发出两个空字符串

    int n=strs.length; //Calculating length gives number of integers

    int a[]=new int[n];

    for (int i=0; i<n; i++) 
    {
        a[i] = Integer.parseInt(strs[i]); //Converting String_Integer to Integer 
        System.out.println(a[i]);
    }
int n=strs.length//计算长度给出整数的数量
int a[]=新的int[n];

对于(int i=0;i,使用BufferedReader-

StringTokenizer st = new StringTokenizer(buf.readLine());

while(st.hasMoreTokens())
{
  arr[i++] = Integer.parseInt(st.nextToken());
}
我知道这是一个古老的讨论:)我测试了下面的代码它的工作

`String day = "";
 day = sc.next();
 days[i] = Integer.parseInt(day);`

当我们想将整数作为输入时
仅需3个输入,如您的情况:

import java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a,b,c;
a = scan.nextInt();
b = scan.nextInt();
c = scan.nextInt();
对于更多的输入,我们可以使用循环:

import java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a[] = new int[n]; //where n is the number of inputs
for(int i=0;i<n;i++){
    a[i] = scan.nextInt();    
}
import java.util.Scanner;
扫描仪扫描=新扫描仪(System.in);
int a[]=新的int[n]//其中n是输入的数量

for(int i=0;i专门为黑客地球考试创建了此代码


  Scanner values = new Scanner(System.in);  //initialize scanner
  int[] arr = new int[6]; //initialize array 
  for (int i = 0; i < arr.length; i++) {
      arr[i] = (values.hasNext() == true ? values.nextInt():null);
      // it will read the next input value
  }

 /* user enter =  1 2 3 4 5
    arr[1]= 1
    arr[2]= 2
    and soo on 
 */ 


扫描仪值=新扫描仪(System.in);//初始化扫描仪
int[]arr=new int[6];//初始化数组
对于(int i=0;iimport java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a[] = new int[n]; //where n is the number of inputs
for(int i=0;i<n;i++){
    a[i] = scan.nextInt();    
}

  Scanner values = new Scanner(System.in);  //initialize scanner
  int[] arr = new int[6]; //initialize array 
  for (int i = 0; i < arr.length; i++) {
      arr[i] = (values.hasNext() == true ? values.nextInt():null);
      // it will read the next input value
  }

 /* user enter =  1 2 3 4 5
    arr[1]= 1
    arr[2]= 2
    and soo on 
 */ 

String user_input = scan.nextLine();
String[] stringsArray = user_input.split(" ");
for (int i = 0; i < stringsArray.length; i++) {
    int x = Integer.parseInt(stringsArray[i]);
    // Do what you want to do with these int value here
}
 int[] intArray = new int[stringsArray.length];
 for (int i = 0; i < stringsArray.length; i++) {
    intArray[i] = Integer.parseInt(stringsArray[i]);
 }
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        String user_input = scan.nextLine();
        String[] stringsArray = user_input.split(" ");

        int[] intArray = new int[stringsArray.length];
        for (int i = 0; i < stringsArray.length; i++) {
            intArray[i] = Integer.parseInt(stringsArray[i]);
        }
    }
}
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int arr[] = Arrays.stream(in.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
Scanner input = new Scanner(System.in);
System.out.println("Enter Name : ");
String name = input.next().toString();
System.out.println("Enter Phone # : ");
String phone = input.next().toString();