Java 文本文件包含字符串和数字。如何查找与字符串关联的最大数字?
我有一本书,我正在读 每行有一对(字符串、值)由逗号分隔。如何找到最大的数字并将其字符串存储在变量中以供以后使用?原因是我必须将这个字符串添加到hashmap中,用户才能继续玩游戏。文件大小会有所不同,因此可能会有更多对或更少对。这取决于我的游戏的用户何时想退出游戏 我唯一的代码是:Java 文本文件包含字符串和数字。如何查找与字符串关联的最大数字?,java,java.util.scanner,Java,Java.util.scanner,我有一本书,我正在读 每行有一对(字符串、值)由逗号分隔。如何找到最大的数字并将其字符串存储在变量中以供以后使用?原因是我必须将这个字符串添加到hashmap中,用户才能继续玩游戏。文件大小会有所不同,因此可能会有更多对或更少对。这取决于我的游戏的用户何时想退出游戏 我唯一的代码是: try { File savedGame=new File("savedGame.txt"); Scanner scan=new Scanner(savedGame); //somethi
try
{
File savedGame=new File("savedGame.txt");
Scanner scan=new Scanner(savedGame);
//something goes here?
}
catch(FileNotFoundException fileError)
{
System.out.println("The file was not Found!\n " + "ERROR:" + fileError);
}
更新:VIPER的方法是实现我所需要的最干净的方法
我的代码是:
try
{
int largest=0;
String startingStr="";
File savedGame=new File("savedGame.txt");
Scanner scan=new Scanner(savedGame);
while(scan.hasNext())
{
String line=scan.nextLine();
String tokens[]=line.split(",");
if(Integer.parseInt(tokens[1])>largest)
{
largest=Integer.parseInt(tokens[1]);
startingStr=tokens[0];
}
}
}
catch(FileNotFoundException fileError)
{
System.out.println("The file was not Found!\n " + "ERROR:" + fileError);
}
确定取一个整数变量并用0或最小整数初始化(若文件有负整数),然后取另一个变量字符串
所以现在要做的是逐行解析,如果数字大于整数变量,则将相应的字符串放入字符串变量中;处理完文件后,您将得到最大整数及其对应的字符串。确定获取一个整数变量,并用0或最小整数初始化(如果文件具有负整数),然后获取另一个变量字符串
所以现在要做的是逐行解析,如果数字大于整数变量,则将相应的字符串放入字符串变量中;处理完文件后,将得到最大整数及其对应的字符串。我会这样做:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String result = "";
int temp = 0;
String line = "";
String path = "C:\\Users\\marco\\IdeaProjects\\untitled1\\src\\test.txt";
try {
java.io.BufferedReader fr = new java.io.BufferedReader(new java.io.FileReader(new File(path)));
while ((line = fr.readLine()) != null) {
String[] splitted = line.split(",");
if(Integer.parseInt(splitted[1]) > temp){
temp = Integer.parseInt(splitted[1]);
result = line;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(result);
}
}
我不是Java专家。但它是有效的;) 我会这样做:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String result = "";
int temp = 0;
String line = "";
String path = "C:\\Users\\marco\\IdeaProjects\\untitled1\\src\\test.txt";
try {
java.io.BufferedReader fr = new java.io.BufferedReader(new java.io.FileReader(new File(path)));
while ((line = fr.readLine()) != null) {
String[] splitted = line.split(",");
if(Integer.parseInt(splitted[1]) > temp){
temp = Integer.parseInt(splitted[1]);
result = line;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(result);
}
}
我不是Java专家。但它是有效的;) 我有一个疑问,您是想要该文件中的最大数字,还是想要所有唯一字符串的最大数字?@AniketKulkarni我想要列表中的最大数字。例如,此文件中的最大值为2。因此,我想存储“WW”以便能够使用它。1)“我有一个我正在阅读的文本文件”,最好将其作为文本添加到问题本身,而不是作为文本的图像链接(或嵌入)。请做那件事。2) 但更好的是。。为了更快地获得更好的帮助,请发布一个or。数据(输入文本文件)可以作为
字符串
变量包含在MCVE/SSCCE代码中。我有一个疑问,您是想要该文件中的最大数字,还是想要所有唯一字符串的最大数字?@AniketKulkarni我想要列表中的最大数字。例如,此文件中的最大值为2。因此,我想存储“WW”以便能够使用它。1)“我有一个我正在阅读的文本文件”,最好将其作为文本添加到问题本身,而不是作为文本的图像链接(或嵌入)。请做那件事。2) 但更好的是。。为了更快地获得更好的帮助,请发布一个or。数据(输入文本文件)可以作为字符串
变量包含在MCVE/SSCCE代码中;当您只需要字符串的输出(就像我刚才读取的一样)时,请使用:result=splitted[0];