从文件读取标准(控制台)输入并将输出打印到其他文件

问题描述:

我想要做的是让我的程序从文件而不是标准控制台输入读取输入测试用例并将输出写回到另一个文件。 这里谈到的问题发挥作用,如果我尝试使用文件时,它显示显示java.lang.NullPointerException给输入,但在另一方面给予正确的输出,如果我想给定制的标准输入(使用cmd)并将输出打印到文件。从文件读取标准(控制台)输入并将输出打印到其他文件

这里是我的示例程序:

public class Roman 
{ 
static private final String INPUT = "Q4.in"; 
static private final String OUTPUT = "Q4.out"; 

    // open I/O files 


public static void main(String[] args) 
{ 
    FileInputStream instream = null; 
    PrintStream outstream = null; 

    try { 
     instream = new FileInputStream(INPUT); 
     outstream = new PrintStream(new FileOutputStream(OUTPUT)); 
     System.setIn(instream); 
     System.setOut(outstream); 
    } catch (Exception e) { 
     System.err.println("Error Occurred."); 
    } 
    int i; 
    Scanner sc=new Scanner(System.in); 

    int T=sc.nextInt(); 

    Num2Rom[] tc=new Num2Rom[T]; 

    for(i=0;i<T;i++) 
    { tc[i]=new Num2Rom(); } 

    System.out.println(T+"\n"); 

    for(i=0;i<T;i++) 
    { tc[i].display(i+1); } 
    } 
} 

ArrayList<String> wordList; 

Num2Rom() 
{ 
    Scanner sc = new Scanner(System.in); 
    while(sc.hasNext()){ 
    String numeral = sc.nextLine(); 
    System.out.println("print"+numeral); 
    numeral = numeral.toUpperCase(); 

    String[] words = numeral.split(" "); 
    wordList = new ArrayList<>(Arrays.asList(words)); } 
} 

输入的格式为:

2 
Eight 
Twenty 

可以使用java命令行arguements给输入程序。

class A{ 
public static void main(String args[]){ 

for(int i=0;i<args.length;i++) 
System.out.println(args[i]); 

} 
} 

将参数转换为所需的类型,因为参数以字符串格式接收。

比如,如果你想要一个integere您可以使用转换

int value=Integer.parseInt($args[0]);