如何从 txt 文件行读取并打印字符串和整数数组
How to read from txt file line and print arrays of strings and integers
我正在从文本文件中读取由用户输入定义的特定行 if(nameLine.contains(inputFileName)){
我正在尝试从该行打印一组名称和一组数字。谁能帮我解决这个问题?我必须创建 2 种不同的方法还是可以在 main 中全部完成?我只知道如何在 while loop
的一个代码中使用一个 Array
,但我不确定如何将它们组合在一起。感谢您的帮助!
My code is not finished, but this is how it looks so far
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
System.out.print("Enter the State name: ");
String inputFileName = in.next();
String names = "pplnames17.txt";
List<String> namearr = new ArrayList<String>();
File namesFile = new File(names);
Scanner stateSearch = new Scanner (namesFile);
//print title
String line0 = Files.readAllLines(Paths.get("pplnames17.txt")).get(0);
System.out.printf("%s in %s", line0, inputFileName);
while(stateSearch.hasNextLine()){
String nameLine = stateSearch.nextLine();
if(nameLine.contains(inputFileName)){
System.out.printf("\n%s",nameLine);
}
}
This is a partial of my Array
code for String
, which I had it after a while loop
while(stateSearch.hasNextLine()){
namearr.add(stateSearch.nextLine());
}
String[] arr = namearr.toArray(new String [0]);
System.out.println(arr);
虽然这不是最好的解决方案,但您可以 upon/tidy 建立一个潜在的解决方案。
基本上,读入您的文件,遍历每一行,如果该行包含用户输入,则拆分该行上的每个 string
,检查是文本还是数字,然后添加到相关数组。
public static void main(String[] args) throws FileNotFoundException {
List<String> nameArr = new ArrayList<>();
List<Double> intArr = new ArrayList<>();
System.out.print("Enter the State name: ");
Scanner in = new Scanner(System.in);
String inputFileName = in.next();
Scanner sc = new Scanner(new File("pplnames17.txt"));
while (sc.hasNextLine()) {
String nameLine = sc.nextLine();
if (nameLine.contains(inputFileName)) {
String[] inputs = nameLine.split(" ");
for (String input : inputs) {
if (isNumeric(input)) {
intArr.add(Double.parseDouble(input));
} else {
nameArr.add(input);
}
}
}
}
if (!nameArr.isEmpty()) {
System.out.println(nameArr);
} else {
System.out.println("No names found");
}
if (!intArr.isEmpty()) {
System.out.println(intArr);
} else {
System.out.println("No numbers found");
}
}
public static boolean isNumeric(String str) {
try {
double d = Double.parseDouble(str);
} catch (NumberFormatException e) {
return false;
}
return true;
}
我测试了一下,我的文本文件是这样的:
abc def ghi 12 55 jkl mno pqr
joe jack mary 1 2 james 4
paul jim kim bob 45 othername
bill yu will gill 455 Paulo
mary
的用户输入给出了输出:
[joe, jack, mary, james]
[1.0, 2.0, 4.0]
我正在从文本文件中读取由用户输入定义的特定行 if(nameLine.contains(inputFileName)){
我正在尝试从该行打印一组名称和一组数字。谁能帮我解决这个问题?我必须创建 2 种不同的方法还是可以在 main 中全部完成?我只知道如何在 while loop
的一个代码中使用一个 Array
,但我不确定如何将它们组合在一起。感谢您的帮助!
My code is not finished, but this is how it looks so far
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
System.out.print("Enter the State name: ");
String inputFileName = in.next();
String names = "pplnames17.txt";
List<String> namearr = new ArrayList<String>();
File namesFile = new File(names);
Scanner stateSearch = new Scanner (namesFile);
//print title
String line0 = Files.readAllLines(Paths.get("pplnames17.txt")).get(0);
System.out.printf("%s in %s", line0, inputFileName);
while(stateSearch.hasNextLine()){
String nameLine = stateSearch.nextLine();
if(nameLine.contains(inputFileName)){
System.out.printf("\n%s",nameLine);
}
}
This is a partial of my
Array
code forString
, which I had it after awhile loop
while(stateSearch.hasNextLine()){
namearr.add(stateSearch.nextLine());
}
String[] arr = namearr.toArray(new String [0]);
System.out.println(arr);
虽然这不是最好的解决方案,但您可以 upon/tidy 建立一个潜在的解决方案。
基本上,读入您的文件,遍历每一行,如果该行包含用户输入,则拆分该行上的每个 string
,检查是文本还是数字,然后添加到相关数组。
public static void main(String[] args) throws FileNotFoundException {
List<String> nameArr = new ArrayList<>();
List<Double> intArr = new ArrayList<>();
System.out.print("Enter the State name: ");
Scanner in = new Scanner(System.in);
String inputFileName = in.next();
Scanner sc = new Scanner(new File("pplnames17.txt"));
while (sc.hasNextLine()) {
String nameLine = sc.nextLine();
if (nameLine.contains(inputFileName)) {
String[] inputs = nameLine.split(" ");
for (String input : inputs) {
if (isNumeric(input)) {
intArr.add(Double.parseDouble(input));
} else {
nameArr.add(input);
}
}
}
}
if (!nameArr.isEmpty()) {
System.out.println(nameArr);
} else {
System.out.println("No names found");
}
if (!intArr.isEmpty()) {
System.out.println(intArr);
} else {
System.out.println("No numbers found");
}
}
public static boolean isNumeric(String str) {
try {
double d = Double.parseDouble(str);
} catch (NumberFormatException e) {
return false;
}
return true;
}
我测试了一下,我的文本文件是这样的:
abc def ghi 12 55 jkl mno pqr
joe jack mary 1 2 james 4
paul jim kim bob 45 othername
bill yu will gill 455 Paulo
mary
的用户输入给出了输出:
[joe, jack, mary, james]
[1.0, 2.0, 4.0]