填充数组列表。JAVA

填充数组列表。JAVA,java,Java,我有一个字符串,我将其拆分为令牌。我试图用for循环填充每个数组列表。我非常接近,但是当我测试打印数组列表时,它没有正确填充 import java.io.*; import java.util.Scanner; import java.util.ArrayList; import java.util.Arrays; public class VicePresidents { public static void main(String[] args) throws IOExcept

我有一个字符串,我将其拆分为令牌。我试图用for循环填充每个数组列表。我非常接近,但是当我测试打印数组列表时,它没有正确填充

import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;

public class VicePresidents {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        String filename = "VicePresidentAges.csv";
        File file = new File(filename);
        Scanner infile = new Scanner(file);

        ArrayList<String> names = new ArrayList<String>();
        ArrayList<Integer> ages = new ArrayList<Integer>();
        
        while (infile.hasNext())
        {
            
            String line = infile.nextLine();
            String[] tokens = line.split(",");
            for(int i = 0; i < tokens[0].length(); i++)
            {
                names.add(tokens[0]);
                
            }
            for(int j = 0; j < tokens[1].length(); j++)
            {
                ages.add(Integer.parseInt(tokens[1]));
            }
            System.out.println(names);
            System.out.println(ages);
                        
            //Divide the line into its tokens (There should be 2 tokens per line)
            //put the tokens into their correct ArrayList
        }
        
        infile.close();

        //Go through the ages ArrayList looking for the youngest age.  
        //Hold onto the *index* where the youngest age is located in the ArrayList.
        
        
        
        //Print out the name and age for the youngest Vice President using the index
        //you just found from above
                
            
    }

}
import java.io.*;
导入java.util.Scanner;
导入java.util.ArrayList;
导入java.util.array;
公营副总裁{
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
字符串filename=“VicePresidentAges.csv”;
文件=新文件(文件名);
扫描仪内嵌=新扫描仪(文件);
ArrayList name=新的ArrayList();
ArrayList ages=新ArrayList();
while(infle.hasNext())
{
字符串行=infle.nextLine();
String[]tokens=line.split(“,”);
对于(int i=0;i

我的输出是这样的:
John Adams,ï?John Adams,ï?John Adams,ï?John Adams,ï?John Adams]
以下的年龄是这样的:
[53,53,53,53,45,45,65,65,68,68,42,42,42,50,50]
对您的代码做了一些修改,让您开始学习,尝试理解并改进它(提取方法,使用java.nio读取文件,…)

导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公营副总裁{
公共静态void main(字符串args[])引发IOException{
字符串filename=“VicePresidentAges.csv”;
文件=新文件(文件名);
扫描仪内嵌=新扫描仪(文件);
ArrayList name=新的ArrayList();
ArrayList ages=新ArrayList();
while(infle.hasNext()){
字符串行=infle.nextLine();
//将该行划分为其标记(每行应有2个标记)
String[]tokens=line.split(“,”);
//将令牌放入正确的ArrayList中
name.add(令牌[0]);
add(Integer.parseInt(令牌[1]);
}        
infle.close();
//打印两个列表以进行检查
System.out.println(名称);
系统输出打印项次(ages);
//浏览年龄列表,寻找最年轻的年龄。
//请按住ArrayList中最年轻年龄所在的*索引*。
int youngestIndex=0;
对于(int i=0;i
输出应该是什么?档案里有什么?是一个有副总统姓名和年龄的文本档案。第一行是“约翰·亚当斯,53岁”。好吧,我试试看。看来我很接近了。你不需要for循环。您正在多次而不是只添加一次名称。您不应该在
标记[0]上循环。长度
--这是名称的长度,在这里不重要!然而,这太棒了,在我的代码中,我的教授预先编码了所有内容,直到String line=infle.nextLine();。除了关闭文件之外,这一行后面的所有内容都是我添加的。她的指令说明不要修改她提供的代码。我试着运行你的代码,但我得到了一个错误:“线程中的异常”main“java.lang.error:未解决的编译问题:在VicePresidents.main(VicePresidents.java:17)”public static void main(字符串[]args)抛出IOException{底部有一个额外的括号,当我删除它时,会出现一个完整的错误列表。我需要在新的注释中添加这些错误。副主席:线程“main”java.lang.IndexOutOfBoundsException中的异常java.base/jdk.internal.util.Premissions.outOfBounds(premissions.java:64)在java.base/jdk.internal.util.premissions.outOfBoundsCheckIndex(premissions.java:70)在java.base/jdk.internal.util.premissions.checkIndex(premissions.java:248)在java.base/java.util.Objects.checkIndex(Objects.java:359)在java.base/java.util.ArrayList.get(ArrayList.java:427)在VicePresidents.main(VicePresidents.java:49)上
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class VicePresidents {

    public static void main(String args[]) throws IOException {
        String filename = "VicePresidentAges.csv";
        File file = new File(filename);
        Scanner infile = new Scanner(file);

        ArrayList<String> names = new ArrayList<>();
        ArrayList<Integer> ages = new ArrayList<>();

        while (infile.hasNext()){
            String line = infile.nextLine();
            //Divide the line into its tokens (There should be 2 tokens per line)
            String[] tokens = line.split(",");
            //put the tokens into their correct ArrayList
            names.add(tokens[0]);
            ages.add(Integer.parseInt(tokens[1]));
        }        
        infile.close();
        //print both list just to check
        System.out.println(names);
        System.out.println(ages);

        //Go through the ages ArrayList looking for the youngest age.  
        //Hold onto the *index* where the youngest age is located in the ArrayList.
        int youngestIndex = 0;
        for(int i = 0; i < ages.size(); i++){
            if(ages.get(i) < ages.get(youngestIndex)){
                youngestIndex = i;
            }
        }

        //Print out the name and age for the youngest Vice President using the index
        //you just found from above
        System.out.println("Youngest Vice President:");
        System.out.println("Name: " + names.get(youngestIndex) + " age: " + ages.get(youngestIndex));
    }
}