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”)、大纲、编码);
}
}