Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 1 0 年前

Java作業

最近有個遊戲是這樣玩的,如果數字對位置不對為B,如果數字對位置也對則為A。遊戲直到猜到4A為止。

如果要寫成程式的話,利用電腦隨機亂數出一個四位數字的題目,使用者利用螢幕上任意猜四個數字,且要輸出使用者一共猜了多少次才猜對。如:電腦出題是 2157 使用者猜 9876 則應為 0A1B 電腦出題是 2157 使用者猜 2417 則應為 2A1B。

請問這個題目這樣寫可以嗎

import java.io.*;

public class guess{

public static void main (String[] args){ String AA = "";

int A=3 , B=0,i=1;BufferedReader ooo = new BufferedReader(new InputStreamReader(System.in));try{for (i=1;i<10;i++)

{

System.out.pritn("請輸入數字:");AA = ooo.readLine();

B = Integer.parseInt(AA);

if (A==B){

System.out.println("你猜對了!!");

i=10;

}else{

System.out.println("你猜錯了!!");

System.out.println();

}

}

}catch (Exception ex){

System.out.println("輸入錯誤...");

}

}

}

已更新項目:

謝謝加菲貓

不過好像跟我的題目有一點不一樣

不是要猜完八次就結束

是等使用者猜完後 顯示他猜了幾次

2 個已更新項目:

guess.txt裡的中文字 都是亂碼0.0

3 個已更新項目:

喔喔~看到華語了

謝謝加菲貓

2 個解答

評分
  • 1 0 年前
    最佳解答

    請參考下方使用隨機產生四個亂數猜幾A幾B遊戲

    import java.util.Scanner;

    public class GuessNumber03 {

    public static void main(String[] args){

    int a,b,c,d;

    a=(int)(Math.random()*(9))+1;

    b=(int)(Math.random()*(10));

    c=(int)(Math.random()*(10));

    d=(int)(Math.random()*(10));

    String str=String.valueOf(a)+String.valueOf(b)+String.valueOf(c)+String.valueOf(d);

    String ans="";

    Scanner sc = new Scanner(System.in);

    boolean chick = false;

    System.out.println("請輸入四個數字,數字對且位置正確得A,位置錯誤得B");

    int count = 0;

    while(++count <=8){ //限制猜的次數到8次沒答對自動結束

    while(!chick){

    ans = sc.next();

    String[]ansTmp = ans.split(""); //使用split()將數字串拆成一個個比對

    String[]inTmp = str.split("");

    int A = 0;

    int B = 0;

    for(int i = 0;i < ansTmp.length;i++)

    for(int j = 0;j < ansTmp.length;j++) {

    if(inTmp[j].equals(ansTmp[i]) && i == j)

    A++;

    else if(inTmp[j].equals(ansTmp[i]) && i != j)

    B++;

    }

    System.out.println("判斷結果"+ A +"A" + B +"B");

    if(A == 4)

    chick = true;

    if(A == 4 && B ==0)

    System.out.println("恭喜你,答對ㄌ");

    break;

    }

    }

    System.out.println("遊戲結束");

    }

    }

    2011-01-05 22:36:56 補充:

    喔!!抱歉沒仔細看圖目~我另作ㄌ個可以使用亂數猜數字遊戲直到猜對結束即顯示你一共猜幾次才猜對

    程式寫在下方文件中請下載下方文件

    http://fanlucy2.myweb.hinet.net/Guess.txt

    2011-01-06 01:03:33 補充:

    打開文件時~~如是在IE看要按上方檢視~~選編碼(D)~~再勾選繁體中文(Big5)

    你電腦是使用Win 7 及IE 8 是嗎?

    參考資料: 加菲貓, 加菲貓, 加菲貓
  • MrAYD
    Lv 5
    1 0 年前

    package GuessNumber;

    import java.util.Random;

    import java.util.Scanner;

    public class GuessNumber {

    private int [] comGuessNumber;

    private int [] userGuessNumber;

    public GuessNumber() {

    this.comGuessNumber = new int [4];

    this.userGuessNumber = new int [4];

    }

    public void initGuessNumber(int randNumber) {

    System.out.println(randNumber);

    int i, index = 0;

    for (i = 1000; i>=10; i/=10) {

    this.comGuessNumber[index++] = randNumber / i;

    randNumber = randNumber % i;

    }

    this.comGuessNumber[index] = randNumber;

    }

    public void inputGuessNumber(int guessNumber) {

    int i, index = 0;

    for (i = 1000; i>=10; i/=10) {

    this.userGuessNumber[index++] = guessNumber / i;

    guessNumber = guessNumber % i;

    }

    this.userGuessNumber[index] = guessNumber;

    }

    public boolean isRepeat() {

    if ((this.comGuessNumber[0] == this.comGuessNumber[1]) & (this.comGuessNumber[2] == this.comGuessNumber[3]))

    return true;

    else

    return false;

    }

    public boolean uGuessNumber() {

    int i , j , a = 0, b = 0;

    for (i = 0; i < 4; i++) {

    for (j =0; j< 4; j++) {

    if (this.userGuessNumber[i] == this.comGuessNumber[j]) {

    if (i == j)

    a++;

    else {

    if (this.userGuessNumber[i] == this.comGuessNumber[i])

    a++;

    else

    b++;

    }

    break;

    }

    }

    }

    System.out.printf("%dA%dB\r\n",a,b);

    if (4 == a)

    return false;

    return true;

    }

    public static void main(String args[])

    {

    boolean checkWin = true;

    Random rand = new Random();

    GuessNumber userGuess = new GuessNumber();

    do {

    userGuess.initGuessNumber(rand.nextInt(9876));

    } while (userGuess.isRepeat());

    do {

    Scanner inNumber = new Scanner(System.in);

    int guessNumber = inNumber.nextInt();

    userGuess.inputGuessNumber(guessNumber);

    checkWin = userGuess.uGuessNumber();

    } while (checkWin);

    }

    }

還有問題?馬上發問,尋求解答。