大家好,我想請問您們java的問題,以下是關於1A2B的規則:
「請使用者輸入一個四個位數的正整數 作為答案,若四位數字中有數字重複,就要就要print出"數字不能重複"。 接著開始進行猜數字,每回合輸入一個四位數整數( 每一位數不可重複),根據輸入回答幾A幾B。 若玩家達成4A0B則印出”Bingo!”並結束遊戲, 若猜了十次仍未解出,則印出”Game over!”並結束遊 戲,若是過程中有出現重複數字,就要print出"數字不能重複"並且不入猜的次數。」
我目前是print出"數字不能重複"的那兩個部分沒有完成,剛剛試了很多次但是都失敗,所以想要請教您們,以下是我的程式。
package HelloWorld;
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("輸入猜數字遊戲答案(數字不重複)");
String ans = scanner.nextLine();
char [] num = ans.toCharArray();
for(int i = 1;i<=10;i++)
{int a=0;int b=0;
System.out.println("開始進行遊戲,請輸入四位數字(數字不重複)");
Scanner scn= new Scanner(System.in);
String ans2=scn.nextLine();
char [] num2 = ans2.toCharArray();
if(num2[0]==num[0])
a=a+1;
if(num2[1]==num[1])
a=a+1;
if(num2[2]==num[2])
a=a+1;
if(num2[3]==num[3])
a=a+1;
if(num2[0]==num[1])
b=b+1;
if(num2[0]==num[2])
b=b+1;
if(num2[0]==num[3])
b=b+1;
if(num2[1]==num[0])
b=b+1;
if(num2[1]==num[2])
b=b+1;
if(num2[1]==num[3])
b=b+1;
if(num2[2]==num[0])
b=b+1;
if(num2[2]==num[1])
b=b+1;
if(num2[2]==num[3])
b=b+1;
if(num2[3]==num[0])
b=b+1;
if(num2[3]==num[1])
b=b+1;
if(num2[3]==num[2])
b=b+1;
if(a==4) {
System.out.println("共可猜10次,這是第"+i+"次");
System.out.println("Bingo!");
System.exit(0);
}
else {
if(i!=10) {
System.out.println("共可猜10次,這是第"+i+"次");
System.out.println(a+"A"+b+"B");
System.out.println("加油,請繼續猜");}
else {
System.out.println("共可猜10次,這是第"+i+"次");
System.out.println(a+"A"+b+"B");
}
}
}
System.out.println("Game Over!");
}
}
換個角度寫
1.把字串裡重覆的字元刪掉
2.跟原來字串做比較,相同表示沒有重覆,不同表示有重覆字元
其中第1點的程式如下
資料來源附在最後面
static String removeDuplicate(char str[], int n)
{
// Used as index in the modified string
int index = 0;
// Traverse through all characters
for (int i = 0; i < n; i++)
{
// Check if str[i] is present before it
int j;
for (j = 0; j < i; j++)
{
if (str[i] == str[j])
{
break;
}
}
// If not present, then add it to
// result.
if (j == i)
{
str[index++] = str[i];
}
}
return String.valueOf(Arrays.copyOf(str, index));
}
對java不熟所以大概講一下做法就好
首先複製輸入並排序
接著陣列內的元素與後一位比對
依序比完就能知道有沒有重複
或是土法煉鋼
四個字元分別存入不同變數
互相比較