pygi-convert.sh
上面的代码示例通过命令行从文件,整数读取输入并将它们存储到数组中。如何修改代码,以便从文件中读取字符?我还希望程序计算文件的行数。
例如,对于输入
import java.util.*;
import java.io.*;
public class Doomday
{
public static void main (String args[]) throws FileNotFoundException
{
Scanner scan = new Scanner(new File(args[0])); //provide file name from outside
int counter =0; //keep track of how many integers in the file
while(scan.hasNextInt())
{
counter++;
scan.nextInt();
}
Scanner scan2 = new Scanner(new File(args[0]));
int a[] = new int[counter];
for(int i=0;i<counter;i++)
{
a[i]=scan2.nextInt(); //fill the array with the integers
}
for(int i=0;i<counter;i++)
{
System.out.print(a[i]);
}
}
}
我想将它存储到二维数组中。如果我知道如何计算字符数和新行数(因为给定了行数和字符数 - 并且我程序中的每一行都有相同数量的字符 - 我可以找到我有多少行),这将很容易
那么如何更改上面的代码来从文件中读取字符并计算程序的行?
您可以提供一些代码帮助吗?
谢谢!
答案 0 :(得分:2)
检查此代码。我把它缩短了
要阅读下一行,Java有nextLine()
并检查下一行是否有hasNextLine()
import java.util.*;
import java.io.*;
public class Dooms
{
public static void main (String args[]) throws FileNotFoundException
{
Scanner scan = new Scanner(new File(args[0])); //provide file name from outside
int counter =0; //keep track of how many lines in the file
while(scan.hasNextLine())
{
String line = new String(scan.nextLine());
System.out.println(line);
counter++;
}
System.out.println("There are "+counter+" lines");
scan.close();
}
}
现在,您可以轻松地将文件内容存储在2D数组中,只需稍加修改即可。
答案 1 :(得分:0)
正如@shubham johar所指出的,Java的Scanner类确实有nextLine()方法可以真正简化代码。这里的转换是根据请求的char数组,但是这些数组是逐行添加到ArrayList
中的,因为我们无法预先知道将有多少行。也就是说,等同于所请求的2D阵列
如果具体为char数组无关紧要,我建议使用String
类。
对于总行数,您始终可以采用ArrayList
的大小
这是代码:
import java.util.*;
import java.io.*;
public class Doomday {
public static void main (String args[]) throws FileNotFoundException {
Scanner lineScanner = new Scanner(new File(args[0]));
ArrayList<char []> lines = new ArrayList<char []>();
while(lineScanner.hasNext()) {
lines.add(lineScanner.nextLine().toCharArray());
}
for(char line[] : lines) {
System.out.println(line);
}
System.out.println("Line count: " + lines.size());
lineScanner.close();
}
}
修改强>
代码版本,通过char读取文件char:
public class Doomday {
public static void main (String args[]) throws FileNotFoundException {
Scanner scanner = new Scanner(new File(args[0]));
scanner.useDelimiter("");
int numberOfLines = 0;
while(scanner.hasNext()) {
char c = scanner.next().charAt(0);
if(c == System.getProperty("line.separator").charAt(0)) {
numberOfLines++;
continue;
}
// do something with char
}
System.out.println("Number of lines: " + numberOfLines);
scanner.close();
}
}