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();
}
}