Java 从txt文件名(一个单词)和(整数)读取输入。将列表写入输出文件,然后输入名称
完成时,输出应为:Java 从txt文件名(一个单词)和(整数)读取输入。将列表写入输出文件,然后输入名称,java,Java,完成时,输出应为: 15 Michael 16 Jessica 20 Christopher 19 Ashley etc. 我不是很擅长这一点,并希望任何关于如何得到int和字符串打印行的任何输入。我避免使用数组方法,因为我总是很难使用数组。有人能告诉我我是否走在正确的轨道上,以及如何正确地解析或类型转换int,以便将它们打印到输出文件的一行上吗?我已经为此工作了好几天,任何帮助都将不胜感激!这是我到目前为止所拥有的 import java.io.PrintWrite
15 Michael
16 Jessica
20 Christopher
19 Ashley
etc.
我不是很擅长这一点,并希望任何关于如何得到int和字符串打印行的任何输入。我避免使用数组方法,因为我总是很难使用数组。有人能告诉我我是否走在正确的轨道上,以及如何正确地解析或类型转换int,以便将它们打印到输出文件的一行上吗?我已经为此工作了好几天,任何帮助都将不胜感激!这是我到目前为止所拥有的
import java.io.PrintWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class NameAgeReverse
{
public static void main (String[] args)
{
System.out.println("Programmed by J");
String InputFileName;
String OutputFileName;
Scanner keyboard = new Scanner(System.in);
System.out.print("Input file: ");
InputFileName = keyboard.nextLine();
System.out.print("Output file: ");
OutputFileName = keyboard.nextLine();
Scanner inputStream = null;
PrintWriter outputStream = null;
try
{
inputStream = new Scanner(new FileInputStream("nameAge.txt"));
outputStream =new PrintWriter(new FileOutputStream("ageName.txt"));
}
catch(FileNotFoundException e)
{
System.out.println("File nameAge.txt was not found");
System.out.println("or could not be opened.");
System.exit(0);
}
int x = 0;
String text = null;
String line = null;
while(inputStream.hasNextLine())
{
text = inputStream.nextLine();
x = Integer.parseInt(text);
outputStream.println(x + "\t" + text);
}
inputStream.close();
outputStream.close();
}
}
以下是我的错误消息:
Exception in thread "main" java.lang.NumberFormatException: For input string: "Michael"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at NameAgeReverse.main(NameAgeReverse.java:52)
text=inputStream.nextLine()
将读取包含姓名和年龄的整行文本。假设输入文件中每一行的格式都是age name
,您可以执行以下操作,将每一行文本解析为所需的值。请注意,这不会与其他代码一起开箱即用。只是一个指针:
text = inputStream.nextLine().split(" "); // split each line on space
age = Integer.parseInt(text[0]); // age is the first string
name = text[1];
这应该起作用:
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
public class ReadWriteTextFile {
final static Charset ENCODING = StandardCharsets.UTF_8;
public static void main(String... aArgs) throws IOException{
List<String> inlines = Files.readAllLines(Paths.get("/tmp/nameAge.txt"), ENCODING);
List<String> outlines = new ArrayList<String>();
for(String line : inlines){
String[] result = line.split("[ ]+");
outlines.add(result[1]+" "+result[0]);
}
Files.write(Paths.get("/tmp/ageName.txt"), outlines, ENCODING);
}
}
import java.io.IOException;
导入java.nio.charset.charset;
导入java.nio.charset.StandardCharset;
导入java.nio.file.Files;
导入java.nio.file.path;
导入java.util.ArrayList;
导入java.util.List;
公共类ReadWriteTextFile{
最终静态字符集编码=StandardCharsets.UTF_8;
公共静态void main(字符串…aArgs)引发IOException{
List inlines=Files.readAllLines(path.get(“/tmp/nameAge.txt”),编码);
列表轮廓=新的ArrayList();
用于(字符串行:内联线){
字符串[]结果=line.split([]+”);
添加(结果[1]+“”+结果[0]);
}
write(path.get(“/tmp/ageName.txt”)、大纲、编码);
}
}