30/09/2018, 21:17
Cách truyền đối số vào main(String [] args) trong Java
Câu hỏi giống như trên, mình có code theo như trong sách và tới đoạn này nó bắt truyền 2 tham số vào main() nhưng ở trong IDE netbean thì mình chỉ biết có Shift + f6 chạy luôn…
Mình đã thử qua Cmd: “java MiniMusicCmdLine 102 30” nhưng lại báo lỗi could not find or load main class.
MiniMusicCmd:
import javax.sound.midi.*;
/**
*
* @author tranl
*/
public class MiniMusicCmdLine {
public static void main(String [] args){
MiniMusicCmdLine mini = new MiniMusicCmdLine();
if(args.length<2){
System.out.println("Don't forget the istrument and note args");
}else{
int instrument = Integer.parseInt(args[0]);
int note = Integer.parseInt(args[1]);
mini.play(instrument,note);
}
}
public void play(int instrument, int note){
try{
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
Sequence seq = new Sequence(Sequence.PPQ,4);
Track track = seq.createTrack();
MidiEvent event = null;
ShortMessage first = new ShortMessage();
first.setMessage(192,1,instrument,0);
MidiEvent changeInstrument = new MidiEvent(first,1);
track.add(changeInstrument);
ShortMessage a = new ShortMessage();
a.setMessage(144,1,note, 100);
MidiEvent noteOn = new MidiEvent(a,1);
track.add(noteOn);
ShortMessage b = new ShortMessage();
b.setMessage(128,1,note,100);
MidiEvent noteOff = new MidiEvent(b,16);
track.add(noteOff);
sequencer.setSequence(seq);
sequencer.start();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Bài liên quan
Chuột phải tên project -> Propertise
Chọn mục Run
Ở đó có 1 ô gọi là Arguments thì bạn ghi các đối số vào là đc
Vậy hả bạn?
Sao nó nó củng không chạy vậy
Mình thử test nó củng không cho ra lỗi, đây là file Class mới có tên testArgumentMain. Dùng để test thôi không liên quan đến class ở phía trên
File JavaTest.java trên ổ D:
Chạy lần lượt:
javac JavaTest.java
java JavaTest Huy Nguyen 9
Kết quả:
Huy
Nguyen
9
Vậy còn cách truyền vào trong NetBean thì sao bạn?
Mình thì chạy thử ví dụ của bạn với cmd được rồi đó , nhưng mình vẩn chưa hiểu tại sao file của mình nó lại là “could not find or load mian class”
Xem lại project Properties ở trên hình của bạn thì có gì đó sai sai giữa tên class và mục “Main Class”.
headfirstjava là tên package chứa file HeadFirstJava (main class)
Nhưng ở dưới lại thấy MiniMusic… rồi lại testArgument…
P/s: args truyền vào bỏ dấu phẩy đi
Integer.parseInt(args[0]);
bạn truyền có dấu “,” nên báo lỗi đó, dòng 13 kìa.
Cái testArugment là cái class để test chạy thử nó có truyền được vào hay không ấy mà , còn cái vụ headfirstjava.HeadFirstJava thì mình không biết, nó mắc định là thế. Mình chỉ ới biết tạo project với tạo thêm folder trong project ấy thồi new thêm file .jva vào chạy thôi . Mới dùng nên nó thế.
Muốn thực thi bằng command line thì ra ngoài folder src rồi gõ (Tức là khi gõ dòng này bạn đang ở folder src)
Muốn biên dịch thì thy java = javac
Còn muốn gọi nó ngay thư mục luôn thì bỏ cái dòng package trong code đi.
Và có vẻ như Java ko lấy cái tên file class = args[0]. Nên bạn phải truyền vào ít nhất 1 argument thì mới args[0] đc.
Là như thế này?
Vấn đề của mình ở đây là: “Mình có file java khi chạy nó sẽ phát ra âm thanh!, nhưng chỉ chạy được trênh netbean còn chạy ở CMD thì lại could not find or load” version trước của nó khi không cần argument thì chỉ chạy được ở netbean và cho âm thanh!
Nhưng khi qua version tiếp theo thì nói đòi hỏi argument, nhưng khổ nối netbean thì chả biết truyền kiêu gì, chạy trên cmd thì lại không ra.Tiến thoái lưởng nam, haha
Vô thêm 1 thư mục src nữa
Khi gõ là phải ở nè:
D:/NetBeanProjectFolder/src/
Thì giả dụ file chính của bạn ở trong folder playMusic, và nó có tên là playMe.java
Dòng lệnh như sau
Còn nếu trong file playMe.java ko có cái dòng package playMusic;
thì vô thẳng thư mục playMusic luôn.
D:/NetBeanProjectFolder/src/playMusic>
Screenshot:
Lưu ý là tên package phải y chóc nhé.
Ơ sao hay vậy :v, giờ được rồi tks bạn