我对Java很新。目前尝试将args []中给出的文件名传递给此FileReader,但是当我编译它时,它说找不到指定的文件。如果我硬编码文件名,它工作正常。这应该是怎么回事?
public class StringSplit
{
public void parseCommands
{
try
{
//not working, why? It works if I do FileReader fr= new FileReader("hi.tpl").
FileReader fr= new FileReader(args);
}
public static void main (String[] args)// args holds the filename to be given to FileReader
{
if (args.length==0)
{
System.out.println("Error: Bad command or filename. Syntax: java [filename.tpl]);
System.exit(0)
}
StringSplit ss= new StringSplit();
ss.parseCommands();
}
}
答案 0 :(得分:5)
您只是开始使用伪代码,但从根本上说,您需要了解Java中不同类型的变量。
args
中的{p> main
是参数 - 它是该方法的本地参数。如果您希望其他方法能够使用其值,则需要将该值存储在共享变量(例如静态或实例变量)中,或者您需要将其作为参数传递给需要它的方法。
例如:
public class StringSplit
{
public void parseCommands(String[] files)
{
try
{
FileReader fr= new FileReader(files[0]);
}
// Rest of code
}
public static void main (String[] args)
{
if (args.length==0)
{
System.out.println("...");
System.exit(0)
}
StringSplit ss= new StringSplit();
ss.parseCommands(args);
}
}
(目前您还可以使parseCommands
成为静态方法,然后在不创建StringSplit
实例的情况下调用它,顺便说一句......)
答案 1 :(得分:1)
您的args参数对parseCommands不可见。
Plus args是一个数组。您可能希望将该数组中的第一个元素发送到parseCommands。
public void parseCommands(String fileName)
{
try
{
//not working, why? It works if I do FileReader fr= new FileReader("hi.tpl").
FileReader fr= new FileReader(fileName);
}
}
public static void main (String[] args)// args holds the filename to be given to FileReader
{
if (args.length==0)
{
System.out.println("Error: Bad command or filename. Syntax: java [filename.tpl]);
System.exit(0)
}
StringSplit ss= new StringSplit();
ss.parseCommands(args[0]);
}
答案 2 :(得分:0)
首先,如果您已经在对象中,则不需要创建一个对象来调用函数。其次,将args作为参数传递给split函数。