這一題到底哪裡有錯誤= =真的看不出來= =

public class PM6_1 {

public static void main(String args[]) {

int maxNum,num1,num2,num3,num4;

Scanner keyin = new Scanner(System.in);

System.out.printf("\n請輸入第一個玩家的姓名(開始擲骰子) =>");

keyin.readLine();

num1 = game();

System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",num1);

System.out.printf("\n請輸入第一個玩家的姓名(開始擲骰子) =>");

keyin.readLine();

num2 = game();

System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",num2);

System.out.printf("\n請輸入第一個玩家的姓名(開始擲骰子) =>");

keyin.readLine();

num3 = game();

System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",num3);

System.out.printf("\n請輸入第一個玩家的姓名(開始擲骰子) =>");

keyin.readLine();

num4 = game();

System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",num4);

maxNum = max(num1,max(num2,max(num3,num4)));

System.out.printf("擲出最大的是 = %d\n",maxNum4);

}

static int game(){

Random random = new Random();

String maxName();

int maxNum = 0;

System.out.printf("\t擲出 =>");

for(int i=1;i<=4;i++){

ran = 1+random.nextInt(6);

System.out.printf("%d ",ran);

number = game();

}

System.out.printf("\n");

return sum;

}

static int max(int number,int maxNum){

If(number>maxNum){

return maxName;

}

else

return maxNum;

}

}

他說都我錯兩個地方

PM6_1.java:30: ';' expected

String maxName();

^

PM6_1.java:42: ';' expected

If(number>maxNum){

^

可是我覺得應該沒有錯ㄅ= = 快暈倒了

Update:

可以再說清楚一點ㄇ

我還是聽不懂

3 Answers

Rating
  • 1 decade ago
    Favorite Answer

    由於需變動的地方很多,請參考我的做法和原始程式碼做比較即可。

    import java.util.*;

    public class PM6_1 {

    public static void main(String args[]) {

    int maxNum,num1[],num2[],num3[],num4[];

    Scanner keyin = new Scanner(System.in);

    System.out.printf("\n請輸入第一個玩家的姓名(開始擲骰子) =>");

    String s = keyin.nextLine();

    num1 = game();

    System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",s,num1[0],num1[1],num1[2],num1[3]);

    System.out.printf("\n請輸入第二個玩家的姓名(開始擲骰子) =>");

    s = keyin.nextLine();

    num2 = game();

    System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",s,num2[0],num2[1],num2[2],num2[3]);

    System.out.printf("\n請輸入第三個玩家的姓名(開始擲骰子) =>");

    s = keyin.nextLine();

    num3 = game();

    System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",s,num3[0],num3[1],num3[2],num3[3]);

    System.out.printf("\n請輸入第四個玩家的姓名(開始擲骰子) =>");

    s = keyin.nextLine();

    num4 = game();

    System.out.printf("%s 先生/小姐擲骰子是 %d %d %d 合計 =%d\n",s,num4[0],num4[1],num4[2],num4[3]);

    maxNum = max(num1[3],max(num2[3],max(num3[3],num4[3])));

    System.out.printf("擲出最大的是 = %d\n",maxNum);

    }

    static int[] game(){

    Random random = new Random();

    int sum = 0;

    int[] rslt = new int[4];

    System.out.printf("\tYX =>");

    for(int i=0;i<3;i ){

    int ran = 1 random.nextInt(6);

    System.out.printf("%d ",ran);

    sum = ran;

    rslt[i] = ran;

    }

    System.out.printf("\n");

    rslt[3] = sum;

    return rslt;

    }

    static int max(int number,int maxNum){

    if(number>maxNum){

    return number;

    }

    else

    return maxNum;

    }

    }

  • 1 decade ago

    不只語法有錯,邏輯也有錯

    printf

    裡所用到的格式控制字元必須是和後方參數值是相對應的

    例如用到兩個 %d %d ,代入值就必須要有兩個

    scanner類別沒有 readLine 方法,要寫成 nextLine

    還有 game 函數裡沒有宣告 sum這個變數

  • 麒麟
    Lv 5
    1 decade ago

    String maxName();

    你的maxName是宣告 String

    結果問題1

    int game() 是回傳整數,

    但If(number>maxNum){

    return maxName; }

    回傳字串

    問題2

    If(number>maxNum)

    數字和字串做比較

    試試看是不是這些錯誤

Still have questions? Get your answers by asking now.