【问题标题】:Shorter version of Java System.out.println() [closed]Java System.out.println() 的较短版本 [关闭]
【发布时间】:2014-02-01 16:51:16
【问题描述】:

有没有办法将System.out.println() 简写为方法?

System.out.println() = short();

所以我可以将这个主要方法更改为...

package Array;
import java.util.Random;

public class Array {
    public static void main(String args[]) {
        data();
        a();
        random();
        a();
        array();
        a();
        rows();
        a();
        System.out.println("average " + average(45,15,15,48,97,45));

    }
    static void a() {System.out.println();}
    static void data() {
        int array[] = {1,5,6};
        int alength = array.length;
        System.out.println("  Location\tData");
        for(int i=0;i<alength;i++) {
            System.out.println("  " + i + "\t\t" + array[i]);
        }
    }
    static void random() {
        Random rdm = new Random();
        int freq[] = new int[7];

        for(int i=1;i<1000;i++) {
            ++freq[1+rdm.nextInt(6)];
        }
        System.out.println("Face\tFrequency");
        int frequence = freq.length;
        for(int face=1;face<frequence;face++) {
            System.out.println(face+"\t"+freq[face]);
        }
    }
    static void array() {
        String po[] = {"lala","po","tinkiwinki","disty"};
        for(String lala: po) {
            System.out.print(lala + " ");
        }
        System.out.println();
    }
    static void rows() {
        int arrays[][]= {{1,5,78,15},{45,67},{875,15687,158,4515,23,2,2}};

        for(int i=0;i<arrays.length;i++) {
            for(int j=0;j<arrays[i].length;j++) {
                System.out.print(arrays[i][j]+"\t");
            }
            System.out.println();
        }
    }
    static int average(int...numbers) {
        int total=0;
        for(int x:numbers)
            total += x;
        return total/numbers.length;
    }
}

class time {
    int h, m, s;
    void setTime(int hour,int minute,int second) {
        h = ((hour>=0 && hour<=24) ? hour : 0);
        m = ((minute>=0 && minute<=60) ? minute : 0);
        s = ((second>=0 && second<=60) ? second : 0);
    }

这个主要方法

 public class Array {
        public static void main(String args[]) {
            a(data());
            a(random());
            a(array());
            a(rows());
            a("average " + average(45,15,15,48,97,45));

打印出来

      Location  Data
  0     1
  1     5
  2     6

Face    Frequency
1   154
2   186
3   161
4   168
5   179
6   151

lala po tinkiwinki disty 

1   5   78  15  
45  67  
875 15687   158 4515    23  2   2   

average 44

【问题讨论】:

  • 你有什么问题?你只是在委派。
  • 在 Java 5/6/7 中这样做可能会使您的代码更加混乱。
  • 为什么这是一种改进,a() 不是与您传递给它的任何东西完全分开的函数吗?因为它打印了一个新行,这似乎是你想要的

标签: java println shorthand


【解决方案1】:

所以你想让 a() 打印一个换行符,那么传递给它的是什么?

static void a(Callable<T> f) {
    System.out.println();
    f.call();
}

我认为应该这样做。

如果你不想和 Callable 混淆:

不要让你的方法返回 void 并打印,而是让它们返回 String。

然后将一个字符串作为参数并打印换行符,然后是传入的字符串。

【讨论】:

    【解决方案2】:

    你的代码差点让我哭。

    但说到点子上,我不确定你想在这里实现什么。 我真的看不出 System.out.println() 有什么问题; 尝试在数组类中使用 toString() 方法并尝试采用面向对象的方法。

    【讨论】:

      【解决方案3】:

      我认为你应该使用面向对象的做法:

      • 你的数据、随机数、数组等应该是一个
      • 具有自定义 toString() 或 prettyPrint() 方法的类

      所以你的目标是这样的:

      Data data = new Data();
      System.out.println(data.toString());
      

      但我不确定这个问题到底是关于什么的......

      【讨论】:

        【解决方案4】:

        在 Eclipse 中,您可以键入 Syso 并同时按 Ctrl+Space,如果您想更轻松地键入它。

        【讨论】:

        • ... 或 sysout 而不是 syso
        猜你喜欢
        • 1970-01-01
        • 2019-09-19
        • 2016-08-03
        • 1970-01-01
        • 2012-05-07
        • 2017-07-20
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        相关资源
        最近更新 更多