ArrayList 的输入
我在将输入字符串格式化为 ArrayList 时遇到问题。我评论了一些我尝试过的事情。最初我尝试将输入放入字符串中,然后添加到 arrayList 中。
输入是一长串:
(A,Name1,200), (A,Name1,200), (R,Name1,200), (A,Name2,900), (A,Name2,500), (A,Name3,800), (A,Name4,150), (A,Name5,850), (A,Name6,750), (A,Name7,950), (A,Name8,250), (R,Name6,750), (A,Name10,450), (A,Name11,1000)*emphasized text*
到目前为止我所拥有的:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/**
*
* @author Joshua
*/
public class HighScore {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
/**
Scanner sc = new Scanner(System.in);
String scores = sc.nextLine();
scores = scores.replace('(', '"');
scores = scores.replace('(', '"');
StringBuffer str = new StringBuffer(scores);
for (int i = 0; i < scores.length(); i++)
{
if (scores.charAt(i) == ',')
{
str.insert(i, 'H');
}
}
System.out.println(str);
*/
ArrayList<Score> list = new ArrayList<Score>();
ArrayList <Score> topscore = new ArrayList<Score>();
/**
list.add (new Score("A","1111",99999));
list.add (new Score("A","2222",88888));
list.add (new Score("A","3333",77777));
list.add (new Score("A","4444",66666));
list.add (new Score("A","5555",55555));
list.add (new Score("A","6666",44444));
list.add (new Score("R","4444",66666));
list.add (new Score("A","7777",22222));
list.add (new Score("A","8888",11111));
*/
Collections.sort(list);
//For loop to add all the high scores with 'A' as the command to the ArrayList topscore
for(Score addScore : list)
{
if (addScore.getCommand().equalsIgnoreCase("A"))
topscore.add(addScore);
}
//For loop to remove all the high scores with 'R' as the command from the ArrayList topscore
for(Score remScore : list)
{
if (remScore.getCommand().equalsIgnoreCase("R"))
for (int i = 0; i < topscore.size(); i++)
{
if (remScore.getName().equals(topscore.get(i).getName()))
if(remScore.getScoreValue() == topscore.get(i).getScoreValue())
topscore.remove(i);
}
}
//Prints the finished finalScore list
for(Score finalScore : topscore)
{
System.out.println(finalScore);
}
/**
String s[]=new String[100];
for(int i=0;i<s.length;i++)
{
s = scores.substring(1, scores.length()-1).split("\\), \\(");
}
*/
sc.close();
}
}
I'm having issues formatting an input String into an ArrayList. I commented out some of the things I've tried. Initially I tried to put the input into a string then add to arrayList.
The input is one long string:
(A,Name1,200), (A,Name1,200), (R,Name1,200), (A,Name2,900), (A,Name2,500), (A,Name3,800), (A,Name4,150), (A,Name5,850), (A,Name6,750), (A,Name7,950), (A,Name8,250), (R,Name6,750), (A,Name10,450), (A,Name11,1000)*emphasized text*
What I have so far:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/**
*
* @author Joshua
*/
public class HighScore {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
/**
Scanner sc = new Scanner(System.in);
String scores = sc.nextLine();
scores = scores.replace('(', '"');
scores = scores.replace('(', '"');
StringBuffer str = new StringBuffer(scores);
for (int i = 0; i < scores.length(); i++)
{
if (scores.charAt(i) == ',')
{
str.insert(i, 'H');
}
}
System.out.println(str);
*/
ArrayList<Score> list = new ArrayList<Score>();
ArrayList <Score> topscore = new ArrayList<Score>();
/**
list.add (new Score("A","1111",99999));
list.add (new Score("A","2222",88888));
list.add (new Score("A","3333",77777));
list.add (new Score("A","4444",66666));
list.add (new Score("A","5555",55555));
list.add (new Score("A","6666",44444));
list.add (new Score("R","4444",66666));
list.add (new Score("A","7777",22222));
list.add (new Score("A","8888",11111));
*/
Collections.sort(list);
//For loop to add all the high scores with 'A' as the command to the ArrayList topscore
for(Score addScore : list)
{
if (addScore.getCommand().equalsIgnoreCase("A"))
topscore.add(addScore);
}
//For loop to remove all the high scores with 'R' as the command from the ArrayList topscore
for(Score remScore : list)
{
if (remScore.getCommand().equalsIgnoreCase("R"))
for (int i = 0; i < topscore.size(); i++)
{
if (remScore.getName().equals(topscore.get(i).getName()))
if(remScore.getScoreValue() == topscore.get(i).getScoreValue())
topscore.remove(i);
}
}
//Prints the finished finalScore list
for(Score finalScore : topscore)
{
System.out.println(finalScore);
}
/**
String s[]=new String[100];
for(int i=0;i<s.length;i++)
{
s = scores.substring(1, scores.length()-1).split("\\), \\(");
}
*/
sc.close();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您还可以使用正则表达式和捕获组来完成此操作:
You can also do it using a regex and capturing groups:
将此用作伪代码。
Use this as a pseudo code.