我有作业要完成,但我不知道如何处理它,我的老师whant我使用ArrayList,但我们没有学习如何使用它......所以需要帮助。Java - 保存10个数独移动到一个ArrayList中,然后将最后一个移动2删除
这里是我的代码 对不起,在法国的代码中留言。 那么我的程序做:
- 说欢迎
- 要求用户选择难度级别,然后打印数独
- 验证是否在数独的价值是对还是错,并打印一条消息
- 这里启动问题;我必须设置10板[] []的值(该方法必须在类案例(最后一个)
- 我也必须保存这10个值(不仅是值,但我在哪里使用它的我必须使用一个ArrayList来做
- 取消2这些步骤,我的意思是,我认为放置10个值,我必须取消其中的2个才能返回原来的值board [x ] [y] = 0
所以对我来说问题真的是ArrayList。要设置一个值,我只做了一个,但我可以做10次,除非你有一个Idea,它可以是随机值或设置值或询问用户在我的课程案例中,我假设要创建对象以保存电路板[x] [y] = z(电路板上的位置和新值)
感谢
import java.util.BitSet;
import java.util.ArrayList;
import java.util.Scanner;
// Classe principale pour faire démarrer le logiciel.
public class TN4 {
public static void main(String[] args) {
System.out.println("Bienvenue dans le sudoku de l'ecole Saint-Pruneau.");
// Initialisation de la fonction pour Imprimer la grille
Sudoku9x9 IGrille = new Sudoku9x9();
String N1;
//Declaration de la variable contenant le niveau de difficulté en appelant la methode permettant a l'utilisateur de choisir son niveau de jeu
N1 = IGrille.Difficulte();
IGrille.setNiveau(N1);
N1 = IGrille.getNiveau();
//appel de la grille originale
IGrille.GrilleOriginale(N1);
//Affichage de la grille
IGrille.Grille();
//Validation de la grille
boolean Vali = IGrille.validate();
if (Vali == true){
System.out.println("Les placement sont valide");
}
else {
System.out.println("Les placements ne sont pas valide, veuillez essayer de nouveau");
}
//System.out.println(Vali);
Sudoku9x9 Test = new Sudoku9x9();
Case Placement = new Case();
Placement.fairePlacement();
IGrille.Grille();
}
}
class Sudoku9x9 extends Sudoku {
//Declaration du scanner pour les données a entrées par l'utilisateur
static Scanner sc = new Scanner(System.in);
public void setBoard(int x, int y, int value) {
board[x][y] = value;
}
//Declaration des valeur de chaque case pour la grille originale selon le niveau de difficulte choisi.
public void GrilleOriginale(String N){
if (N == "facile"){
System.out.println("Voici la grille initiale de niveau " + N + " : ");
board = new int[][]
{{0,0,4,8,0,6,9,1,7},
{0,0,0,1,4,9,2,0,5},
{1,0,9,5,0,7,4,0,8},
{4,3,6,7,9,0,0,2,1},
{0,0,2,4,6,1,0,9,3},
{9,1,0,2,0,3,0,4,6},
{2,8,1,6,7,4,3,5,9},
{7,9,5,3,1,2,6,8,4},
{6,4,3,9,0,0,1,7,2}};
}
if (N == "intermediaire") {
System.out.println("Voici la grille initiale de niveau " + N + " : ");
board = new int[][]
{{0,0,4,8,0,6,9,1,0},
{0,0,0,1,4,0,2,0,5},
{1,0,0,5,0,7,4,0,8},
{4,3,6,7,0,0,0,2,1},
{0,0,2,0,6,1,0,9,3},
{9,0,0,2,0,3,0,4,6},
{2,8,1,6,7,4,3,5,9},
{0,9,0,3,1,2,6,8,4},
{6,0,3,9,0,0,1,0,2}};
}
if (N == "difficile") {
System.out.println("Voici la grille initiale de niveau " + N + " : ");
board = new int[][]
{{0,0,4,8,0,6,9,1,0},
{0,0,0,1,4,0,0,0,5},
{1,0,0,5,0,0,4,0,8},
{4,0,6,0,0,0,0,2,1},
{0,0,2,0,6,1,0,9,3},
{9,0,0,0,0,3,0,4,6},
{2,0,1,0,7,0,0,5,9},
{0,9,0,3,1,2,0,8,4},
{6,0,3,9,0,0,1,0,2}};
}
}
//Methode permettant à l'usager de choisir son niveau de difficulté et retournant celui-ci
public String Difficulte(){
System.out.println("Veuillez choisir votre niveau de jeu:\n1 = Facile\n2 = Intermediaire\n3 = Difficile");
int nombre = 0;
String Niveau = "";
nombre = sc.nextInt();
while (nombre < 1 || nombre > 3){
System.out.println("Vous devez choisir un nombre entre 1 et 3, essayez de nouveau:\n");
nombre = sc.nextInt();
}
if (nombre == 1){
Niveau = "facile";
}
if (nombre == 2){
Niveau = "intermediaire";
}
if (nombre == 3){
Niveau = "difficile";
}
System.out.println("Vous avez choisi le niveau " + Niveau + ".\n");
return Niveau;
}
}
abstract class Sudoku {
public String Bonjour = "Variable bonjour de la methode bark";
private String Niveau;
static int[][] board = new int[9][9];
//Setter pour le Niveau de jeu
public void setNiveau(String c) {
this.Niveau = c;
}
//Getter pour le niveau de jeu
public String getNiveau() {
return Niveau;
}
public abstract String Difficulte();
// Methode Grille est concu pour afficher toutes les valeur de notre sudoku, et si "0" la case est vide et on affiche "."
public void Grille() {
for (int i = 0; i < 9; i++) {
System.out.print("\n");
if(i%3==0)
System.out.print("\n");
for (int j = 0; j < 9; j++) {
if (j % 3 == 0)
System.out.print(" ");
if (board[i][j] == 0)
System.out.print(". ");
if (board[i][j] == 1)
System.out.print("1 ");
if (board[i][j] == 2)
System.out.print("2 ");
if (board[i][j] == 3)
System.out.print("3 ");
if (board[i][j] == 4)
System.out.print("4 ");
if (board[i][j] == 5)
System.out.print("5 ");
if (board[i][j] == 6)
System.out.print("6 ");
if (board[i][j] == 7)
System.out.print("7 ");
if (board[i][j] == 8)
System.out.print("8 ");
if (board[i][j] == 9)
System.out.print("9 ");
}
}
System.out.print("\n");
}
//Fonction fourni par le cour pour valider les case du sudoku
public boolean validate() {
// un tableau : int[][] board = new int[9][9]();
// initialisation et actions sur le Sudoku
//int[][] board = new int[9][9];
//Vérifie les lignes et les colonnes
for (int i = 0; i < board.length; i++) {
BitSet bsRow = new BitSet(9);
BitSet bsColumn = new BitSet(9);
for (int j = 0; j < board[i].length; j++) {
if (board[i][j] == 0 || board[j][i] == 0) continue;
if (bsRow.get(board[i][j] - 1) || bsColumn.get(board[j][i] - 1))
return false;
else {
bsRow.set(board[i][j] - 1);
bsColumn.set(board[j][i] - 1);
}
}
}
//Vérifie les quandrans (3x3)
for (int rowOffset = 0; rowOffset < 9; rowOffset += 3) {
for (int columnOffset = 0; columnOffset < 9; columnOffset += 3) {
BitSet threeByThree = new BitSet(9);
for (int i = rowOffset; i < rowOffset + 3; i++) {
for (int j = columnOffset; j < columnOffset + 3; j++) {
if (board[i][j] == 0) continue;
if (threeByThree.get(board[i][j] - 1))
return false;
else
threeByThree.set(board[i][j] - 1);
}
}
}
}
return true;
}
}
class Case {
int Line;
int Row;
int Value;
ArrayList Placement = new ArrayList();
Sudoku9x9 Placer = new Sudoku9x9();
public void fairePlacement() {
Placer.setBoard(0, 0, 1);
}
}
欢迎来到Stack Overflow。我们很乐意帮助您学习编程。请告诉我们一些你已经尝试过的东西,并问一个具体的问题是什么部分给你带来麻烦。许多人会很高兴地解释当你问一个详细而精确的问题时你需要知道什么。祝你好运! –
定义“无效移动”。如上所述,我们需要一个更具体,明确,明确的问题。 – qxz
要开始,您应该解释如何确定步骤1中需要的10个值。您从哪里获得这些值? –