我是Java的初学者,正在为一门课程开设一个Mastermind项目。
我有问题。我想检索leftDigit
的值并将其放入数组guess[4]
。但我不知道如何在循环外检索它。
让我们说当我输入数字1234并希望它成为int[] guess = { 1, 2, 3, 4};
时
`
public static void inputNumber(){
Scanner input = new Scanner(System.in);
currentRow++;
System.out.printf ("Enter 4 numbers for attempt #%d: ", currentRow);
int count = 10000, leftDigit;
double tempNum;
int number = input.nextInt();
//finding the left digit
do{
tempNum = (double) number / count ;
leftDigit = (int) (tempNum * 10) ;
count /=10;
number = number - ( count * leftDigit);
} while (count != 1 );
}
答案 0 :(得分:1)
int [] guess = new int[4];
int i = 0;
//finding the left digit
do{
tempNum = (double) number / count ;
leftDigit = (int) (tempNum * 10) ;
guess[i++] = leftDigit;
count /=10;
number = number - ( count * leftDigit);
} while (count != 1 );
//Use guess as you want it contains the 4 digits you need
答案 1 :(得分:0)
发布的解决方案有效,但有一些事情是不必要的。这是代码,我将在下面解释:
int count = 1000; // notice I start at 1000, not 10_000
int[] guess = new int[4];
int i = 0;
do {
guess[i++] = number / count; // (1)
number %= count; // (2)
count /= 10;
} while (count != 1)
(1):因为数字和计数都是 int ,所以结果不是浮点数,也不会四舍五入。它只会截断浮动部分。例如:8/3 == 2; 543/1000 == 0。
(2):此行将获得除法的剩余部分。例如:16%5 = 1; 1043%1000 = 43.(写这一行的另一种方法是number = number % count
)。