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