gpt4 book ai didi

java - 使用 Scanner.next() 将字符串集拆分为 ArrayList

转载 作者:行者123 更新时间:2023-11-30 09:39:07 26 4
gpt4 key购买 nike

我正在尝试将用户输入的集合(例如 { 1 2 3 4 })作为一个字符串拆分为一个数组列表,这样当我打印出数组列表时,它将读取 {1、2、3、5}。到目前为止,这是我的代码。我不太确定 Scanner.next() 方法是如何工作的,但我正在尝试使用它。这是我程序的一小部分。其实这就像开始。

import java.util.Scanner;
import java.util.ArrayList;
public class practice {
public static void main (String[]args){
Scanner stdIn = new Scanner (System.in);
String set;
String set2 = "";

System.out.print("Enter set:");
set = stdIn.nextLine();
if(set.charAt(0) == '{'){
for(int i =1; i<set.length(); i++){
set2 += set.charAt(i);
}
}
else if(set.charAt(1) == '{'){
for(int i = 2; i <set.length();i++){
set2 += set.charAt(i);
}
}
System.out.print(set2);


ArrayList<Integer> array = new ArrayList<Integer>();

while(stdIn.next() != "}"){
set2 = stdIn.next();
array.add(Integer.parseInt(set2));
}
System.out.print(array);

}
}

最佳答案

你应该在 String 中使用 String.split(String)String.replaceAll(String, String) 方法来做您的代码目前所做的很多事情。

您可以使用 stdIn.nextLine(); 获取当前正在执行的用户输入,但之后,您可以以更简单的方式进行字符串处理。

首先,您应该删除不需要的字符,最后只得到一个由空格分隔的数字序列。

您只需调用 replaceAll 方法并提供正则表达式即可完成此操作,在本例中这非常简单。

然后您可以调用String.split 方法来查找集合中的每个元素。

String in = stdIn.nextLine();
// Need to escape the characters because
// these characters mean something special in regular expressions
String filtered = userInput.replaceAll("(\\[\\{\\}\\],"," ");
String[] numbers = filtered.split("\\s+");
ArrayList <Integer> myNumbers = new ArrayList <Integer> ( numbers.length );
for ( String number : numbers )
myNumbers.add ( Integer.parseInt ( number ) );

更新

如果需要使用扫描器,可以对过滤后的String使用扫描器

Scanner s = new Scanner ( filtered );
ArrayList <Integer> myNumbers = new ArrayList < Integer > ();
while ( s.hasNext() )
{
myNumbers.add(s.nextInt());
}

关于java - 使用 Scanner.next() 将字符串集拆分为 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9913850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com