填充数组列表。JAVA
我有一个字符串,我将其拆分为令牌。我试图用for循环填充每个数组列表。我非常接近,但是当我测试打印数组列表时,它没有正确填充填充数组列表。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
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));
}
}