我正在尝试让用户输入一个三位数字,然后让代码使用charAt()为每个数字的char分配一个新变量,并将每个数字放入一个数组中。到目前为止,它允许我输入一个数字,但它会停止并且不会做任何其他事情,所以我认为这是一个问题。你会怎么做?
目的是使计算机生成一个三位数字,要求用户输入一个数字,然后分析数字,看看猜测数字的数字是否与生成的数字相同,有多少正确的数字位于正确的位置。因此,如果生成的数字为180,并且您猜测为481,那么正确的数字将为2,正确的数字将为1.
import java.util.Scanner;
public class Main {
public static void main(String[] args){
char[] array = new char [3];
for (int i = 0; i < array.length; i++){
array[i] = (char)(Math.random() * 9);
}
char[] guess = {0, 0, 0};
System.out.println("I have a three digit number with no repeating digits. Guess the number.");
while (guess != array){
Scanner input = new Scanner(System.in);
char number1 = input.next().charAt(0);
char number2 = input.next().charAt(1);
char number3 = input.next().charAt(2);
guess[0] = number1;
guess[1] = number2;
guess[2] = number3;
int digit = 0;
int place = 0;
for(int n = 0; n < array.length; n++){
for(int d = 0; d < array.length; d++){
if(array[n] == guess[d]){
digit++;
}
}
}
for(int r = 0; r < array.length; r++){
if(array[r] == guess[r]){
place++;
}
}
System.out.println("Correct digits: " + digit);
System.out.println("Correct places: " + place);
}
System.out.println("Congratulations, you got it");
}
}
答案 0 :(得分:0)
Scanner input = new Scanner(System.in);
String num = input.next();
char number1 = num.charAt(0);
char number2 = num.charAt(1);
char number3 = num.charAt(2);
要解决在此之后遇到的问题:
array[i] = (char) (Math.random() * 9 + '0');
您需要正确存储角色。之前,您存储的是ascii代码0 - 9.
while (guess[0] != array[0] || guess[1] != array[1] || guess[2] != array[2]){
您需要单独比较数组的每个值。
您需要在对字符进行采样之前存储该数字。