Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

java.net提供的樣本程式compile錯誤,急修改..

import java.util.Vector;

import javax.media.CaptureDeviceInfo;

import javax.media.CaptureDeviceManager;

import javax.media.format.AudioFormat;

import javax.media.format.VideoFormat;

public class CaptureDeviceFinder {

static String audioformats[] = {

AudioFormat.ALAW,

AudioFormat.DOLBYAC3,

// 略

AudioFormat.VOXWAREVR18

};

static String videoformats[] = {

VideoFormat.CINEPAK,

VideoFormat.H261,

// 略

VideoFormat.YUV

};

public static void main(String args[]) {

/* Audio capture devices */

System.out.println("CAPTURE AUDIO FORMATS:");

for (String format : audioformats) {

System.out.println("\tFormat: "+format);

Vector<CaptureDeviceInfo> devices = CaptureDeviceManager.getDeviceList(new AudioFormat(format));

if (devices.isEmpty())

System.out.println("\t\tNO CAPTURE DEVICES");

for (CaptureDeviceInfo device : devices) {

System.out.println("\t\t"+device.getName());

}

}

/* Video capture devices */

System.out.println("CAPTURE VIDEO FORMATS:");

for (String format : videoformats) {

System.out.println("\tFormat: "+format);

Vector<CaptureDeviceInfo> devices = CaptureDeviceManager.getDeviceList(new VideoFormat(format));

if (devices.isEmpty())

System.out.println("\t\tNO CAPTURE DEVICES");

for (CaptureDeviceInfo device : devices) {

System.out.println("\t\t"+device.getName());

}

}

}

}

錯誤其一

CaptureDeviceFinder.java:81: ';' expected

for (String format : audioformats) {

....................................^

請問,有看過 for(a:b){....的嗎?

甚意思?

更新:

感謝

鴨子陳 ( 初學者 1 級 )

不過for(a:b)不是用for(i=0;i<10;++i)可以取代的

例如原文for (CaptureDeviceInfo device : devices)....這個device是周邊設備讀出的,倒底有幾個?

有些周邊設備會給device.size....有些不會,不給device.size...for(i=0;i

更新 2:

不給device.size...那 for( i=0; i

更新 3:

不給device.size...那 for( i=0; i小於device.size; ++1)就掛了

所以我只有乖乖去DownLoad J2SDK5.x

淺見

更新 4:

鴨子陳 ( 初學者 1 級 ):

問題是在SDK不認識for(a:b)

不是JVM要更新

想當然SDK更新Compile過了JVM不用更新,可以吧!

But But But

鴨子被雷打到,真的有問題....

SDK5,Install後,它會更新Run Time Environment...

但,同鞋....java run時出現error open on regist

害我又去DownLoad Java SE run time environment(jre-6....)

總而言之,20點給有神通的鴨子陳,U deserve!!

3 個解答

評分
  • 1 十年前
    最愛解答

    for(a:b)是我最近有看到,唯一的解釋是新版的JVM(JDK5.0)功能。

    CaptureDeviceFinder.java:81: ';' expected這是我們一直記在心理面的for(int i=0;i<something;i++)

    你要不要把你的JVM更新到最新的版本?

    2009-09-16 11:35:21 補充:

    ㄜ...打字慢....

    把最佳解答讓給一號意見。

    2009-09-16 13:25:33 補充:

    for(int i=0; i

    2009-09-16 13:29:30 補充:

    @@

    那個爛小於...

    for(int i=0;i〈devices.size();i++){

    CaptureDeviceInfo temp = (CaptureDeviceInfo) devices.elementAt(i);

    System.out.println("\t\t"+temp.getName());

    }

    看有嗎?

  • 1 十年前

    感恩!感恩!

    請copy 意見001到回答001,....20點罔賺

    下載J2SE5.0後,compile過了....但出現警語

    Note: CDfinder.java uses unchecked or unsafe operations.

    Note: Recompile with -Xlint:unchecked for details.

    請問你都怎麼處理

    真的要執行Xlint嗎?

  • 匿名
    1 十年前

    for(a : b) 是 for - each

    for - each是J2SE 5.0新增的語法

    可應用於陣列的循序存取!!

    int[] arr = {1, 2, 3, 4, 5};

    for(int element : arr)

    這是寫法之ㄧ!!

    2009-09-16 17:42:36 補充:

    最佳解答給鴨子陳好了:)

    我只是給點意見而已!!

    呵!! :)

還有問題嗎?立即提問即可得到解答。