Java 有没有办法使它更紧凑?

Java 有没有办法使它更紧凑?,java,shorthand,Java,Shorthand,我有一个项目,部分目标是拥有尽可能短的代码。我已经尽了我所能使它尽可能紧凑,但我想知道下面的代码是否还有更多的快捷方式 public static void read(String[] input) throws IOException { for (String s : input) { BufferedReader b = new BufferedReader(new FileReader(s)); while (b.ready()) {

我有一个项目,部分目标是拥有尽可能短的代码。我已经尽了我所能使它尽可能紧凑,但我想知道下面的代码是否还有更多的快捷方式

public static void read(String[] input) throws IOException {
    for (String s : input) {
        BufferedReader b = new BufferedReader(new FileReader(s)); 
        while (b.ready()) {
            String[] val = b.readLine().split(" ");
            for (String c : val) System.out.println(c);
        } 
        b.close();
    }   
}

这取决于你所说的“紧凑”是什么意思。例如,你可以改变

String[] val = b.readLine().split(" ");
for (String c : val) System.out.println(c);
进入

或者使用
Scanner
类使用一些不同的方法,这将使代码更短、更可读

public static void read(String[] input) throws IOException {
    for (String s : input) {
        Scanner scanner = new Scanner(new File(s));
        while (scanner.hasNext()) 
            System.out.println(scanner.next());
        scanner.close();
    }
}

您也可以尝试这种方式(基于Christian Fries答案的概念)


正如您所看到的,这将不允许您关闭扫描仪,但是由于
文件
资源不可关闭
因此您不必调用其
关闭
方法,因此这种方法看起来是安全的。

而不是使用
拆分(“”
),然后使用for循环在您可以使用的行上打印结果数组的每个元素

System.out.println(b.readLine.replace(' ','\n'));
就是

public static void read(String[] input) throws IOException {
    for (String s : input) {
        BufferedReader b = new BufferedReader(new FileReader(s)); 
        while (b.ready()) System.out.println(b.readLine.replace(' ','\n'));
        b.close();
    }   
}

“紧凑”是相对的。你可以把它们放在一行,但代码还是一样的。例如,在我看来,你的For循环最好是正确地使用大括号,并在它自己的行中使用sysout,以保持清晰。我想说的是,按照MadConan所说的,保持可读性并牺牲一点紧凑性,而不是压缩到极致,使其难以维护和阅读。我也同意内部
for
循环;要么用大括号括起来,要么把
System.out.println
行向下推,缩进一行。坦白地说,否则对我来说很好。通常我总是使用大括号,而不是代码中的所有内容都在同一行。这里的挑战是尽可能少的线,这就是为什么我这样做的原因,但感谢您的反馈。我同意在任何其他正常情况下,正确的格式总是最好的方式。谢谢。命名
read
方法
rea
input
参数
inpu
这里的挑战是尽可能减少行数
关于新行有什么条件吗?就像每个
后面都应该有新的线条标记一样
{
?如果没有,你可以删除代码中的每一个新行标记,只得到一行…非常感谢。非常确定它是“紧凑的”,因为我现在就要得到它。最后一行很酷。第二行是(带扫描仪和hasNext)最漂亮的一行:紧凑且可读。
System.out.println(b.readLine.replace(' ','\n'));
public static void read(String[] input) throws IOException {
    for (String s : input) {
        BufferedReader b = new BufferedReader(new FileReader(s)); 
        while (b.ready()) System.out.println(b.readLine.replace(' ','\n'));
        b.close();
    }   
}