Java-字符串拆分错误
我试图拆分一个字符串并将每个子字符串返回到Java中的一个数组(在c#中更容易),但编译器没有。当我试图调用索引大于0的数组中任何字符串的值时,我总是得到一个索引越界错误。以下是我使用的代码:Java-字符串拆分错误,java,string,split,Java,String,Split,我试图拆分一个字符串并将每个子字符串返回到Java中的一个数组(在c#中更容易),但编译器没有。当我试图调用索引大于0的数组中任何字符串的值时,我总是得到一个索引越界错误。以下是我使用的代码: public class hello { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt();
public class hello {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int setter = 3000;
String num = in.next();
String[] numbers = num.split(" ");
int j = numbers.length;
for (int i =0; i < numbers.length ; i++) {
System.out.println(numbers[i]);
}
System.out.println(j);
公共类你好{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
int n=in.nextInt();
int setter=3000;
字符串num=in.next();
字符串[]数字=num.split(“”);
int j=数字。长度;
for(int i=0;i
甚至返回的数组长度也是1。正如David Wallace在评论中所说:您应该使用扫描仪的nextLine。。。 但是…为什么要将行拆分为int
public static void main(final String[] args) {
final Scanner in = new Scanner(System.in);
String line = null;
List<List<Integer>> all = new ArrayList<>();
while ((line = in.nextLine()) != null) {
final String[] tokens = line.split(" ");
List<Integer> forOneLine = new ArrayList<>();
for (final String token : tokens) {
try {
final Integer value = Integer.valueOf(token);
forOneLine.add(value);
} catch (final NumberFormatException e) {
// Not an Integer
}
}
all.add(forOneLine);
}
publicstaticvoidmain(最终字符串[]args){
最终扫描仪输入=新扫描仪(系统输入);
字符串行=null;
List all=new ArrayList();
而((line=in.nextLine())!=null){
最终字符串[]标记=line.split(“”);
List forOneLine=new ArrayList();
for(最终字符串标记:标记){
试一试{
最终整数值=Integer.valueOf(令牌);
forOneLine.add(value);
}捕获(最终编号格式e){
//不是整数
}
}
全部。添加(forOneLine);
}
现在可以了吗?最终解析为一个整数
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String n = in.nextLine();
int ne = Integer.parseInt(n);
String m = in.nextLine();
String[] numbers = m.split(" ");
System.out.println(n);
System.out.println(m);
for (String string : numbers) {
System.out.println(string);
}
}
我的第一个输入是5..然后..“1 2 3 4 5”您的
in.next()
只返回一个令牌。您可能希望in.nextLine()
代替。一切都“在C中更简单”如果您不费心阅读Javadoc并调用错误的方法。Wallace先生,这修复了错误,但现在它只接受一行输入,而不是两行输入,您可能需要插入对nextLine()的额外调用
读取第一次输入后出现的换行符。好的,添加一个额外的呼叫解决了这个问题,它似乎正常工作,谢谢Wallace先生。它的工作原理是用户首先输入他想输入的数字数量…即5…然后输入5个数字“1 2 3 4 5”这些数字被分成一个数组。