这里不允许'void'类型

Ank*_*kit 1 java

得到一个不寻常的错误: - 这里不允许''void'类型

import javax.sound.midi.*;

 public class MiniMusicPlayer1 {
    public static void main(String[] args) {
            try {
                    Sequencer player = MidiSystem.getSequencer();
                    Sequence seq = new Sequence(Sequence.PPQ, 4);
                    Track track = seq.createTrack();
                    for (int i = 5; i < 61; i += 4) {
                            track.add(makeEvent(144, 1, i, 100, i));
                            track.add(makeEvent(128, 1, i, 100, i));
                    }

                            player.setSequence(seq);
                            player.setTempoInBPM(220);
                            player.start();



            } catch (Exception ex) {
                    System.out.println(ex.printStackTrace());
            }
    }

    public static MidiEvent makeEvent(int comd, int ch, int note, int vel,
                    int tick) {
            MidiEvent event = null;
            try
            {
                    ShortMessage a = new ShortMessage();
                    a.setMessage(comd, ch, note, vel);
                    event = new MidiEvent(a,tick);

            }
            catch(Exception e)
            {
                    System.out.println(e.getMessage());
            }
            return event;
    }
Run Code Online (Sandbox Code Playgroud)

ankit @ battlestar:/ home/mount_150/Java $ javac MiniMusicPlayer1.java MiniMusicPlayer1.java:21:错误:此处不允许'void'类型System.out.println(ex.printStackTrace()); ^

请帮忙.

Dav*_*ton 10

你正在调用printStackTrace并"传递"其无效结果println.

println需要打印的东西:你需要的只是ex.printStackTrace().

  • @Arnab:你在谈论哈迪斯的什么?如果没有可行的信息传递给println怎么可能处理呢?戴夫1+ (4认同)
  • @ArnabDatta它指的是那里唯一不能为空的东西,`println`的参数.什么是'println`接受记录,它应该是什么是九种可能性之一.我不清楚用Javadocs中已有的一段文本污染编译输出会更好.有些语言*会*尝试猜测是什么意思,但我至少就像那样.如果没有得到有效参数,你总是可以提交一个增强请求来调用被调用方法的Javadocs,但我会根据ROI投票反对它. (3认同)
  • @ArnabDatta - 我认为你期待过多的Java编译器.编译器在编写无效的东西时尝试找出新手用户*的含义是不切实际的.(坦率地说,很多时候人们甚至不可能弄明白......而不依赖于新手的问题/评论中的各种高级提示.) (2认同)
  • *"也许避免笨拙的编译器错误消息"*看到很多代码片段在运行时编译正常但失败(无声),我不同意.编译器消息是否更好是另一回事.*"当它说"此处不允许使用void类型"时它指的是什么?"*编译器消息通常在前一行包含一些`^`,以准确显示代码行中的位置,检测到无意义.我的建议是停止抱怨编译器报告的内容,并学会理解它. (2认同)