java - 使用 for 循环在 CHAR[] 数组中查找特定 CHAR 元素 = 始终为 False
问题描述
所以我正在做作业,这应该是一场牛和牛的游戏。
我生成了 4 个随机整数进行猜测,用户输入一个 4 位数字。然后我验证该数字确实是 4 位数长并将其转换为 CHAR 数组。之后,我想将随机生成的数字与数组中的元素一一进行比较,如果相等,则将“1”添加到计数器中。
我已经尝试了许多我在互联网上找到的类似问题的解决方案,其中一些非常困难的解决方案我没有,因为它们看起来有点矫枉过正,因为我对编程还是很陌生,我觉得好像我错过了一些简单而明显的东西。问题是,每次我遍历数组时,元素都应该匹配,但条件总是“假”。
这是代码的有问题的部分:
Scanner Sc1 = new Scanner(System.in);
if(Sc1.hasNextInt()){ // is it a number ? ?
int user_guess = Sc1.nextInt();
String user_guess_string = Integer.toString(user_guess); // how.
int length = user_guess_string.length(); // many
if(length != 4){ //digits
System.out.println("On vaja 4 numbrid.Mäng hakkab otsast pihta");
cows_and_bulls();}
char[] player_number = user_guess_string.toCharArray();
char num0 = (char)random1; // casting
char num1 = (char)random2; // random numbers
char num2 = (char)random3; // into
char num3 = (char)random4; // chars
int cows = 0; // counter of instances where a number guessed by the user is in array
int bulls = 0; // counter of instances where a guessed number is in array and correct spot
for (char element : player_number) {
if (element == num0) {
cows = cows + 1;
}
}
System.out.println(cows);
}
else{ System.out.println("Not a number. Game will restart");
cows_and_bulls();}
}
我也试过这个:
for (int i = 0; i < 4; i++) {
char c = Array.getChar(player_number,i);
if (num0 == c) {
System.out.println("works");
break;
}
}
我知道我在这方面很糟糕,请帮助。
解决方案
我不确定你从哪里得到random1
,random2
和from 因为它不是你上面粘贴的逻辑random3
的random4
一部分但是这里的问题是你没有将 '0' 的 ASCII 添加48
到上面的值中同时将它们转换为字符.
假设您拥有的所有随机数都是介于 之间的有效数字0 - 9
,则以下应该有效。
char num0 = (char)(48 + random1);
char num1 = (char)(48 + random2);
...
...
推荐阅读
- list - 如何找到列表中的字符串是另一个列表中另一个字符串的子字符串的次数?
- html - 如何将 4 个元素 2 x 2 弯曲包装
- flutter - 从字段中检索 Firestore 自动生成的文档 ID
- dialogflow-es - 为什么dialogflow不能识别CNY?
- amazon-web-services - AWS EMR - 在主实例应用程序预置失败时因错误而终止
- python - 如何丢弃函数参数中的无值
- javascript - 对象数组中的类型转换
- javascript - 有人可以帮助更改时间格式吗?
- asp.net-mvc - 在 grecaptcha.execute() 之后,form.submit 在 ASP.Net MVC 5 表单上不起作用
- types - 在 Julia 中按包装器类型进行比较