Java 我如何获取用户输入的数字并分别处理其数字?
我正在提示用户输入一个数字,并试图确定该数字中的偶数、奇数和零的数量Java 我如何获取用户输入的数字并分别处理其数字?,java,Java,我正在提示用户输入一个数字,并试图确定该数字中的偶数、奇数和零的数量 /* This program will determine and print the number of even, zero, and odd digits in * an integer * * Author: Marco Monreal * Date: 11/01/2016 */ import java.util.Scanner; public class PP5_3 { public stat
/* This program will determine and print the number of even, zero, and odd digits in
* an integer
*
* Author: Marco Monreal
* Date: 11/01/2016
*/
import java.util.Scanner;
public class PP5_3
{
public static void main(String[] args)
{
String exit_loop, go_again, user_num, first_char_string;
int odds, evens, zeros;
int first_char; //, second_char, third_char, fourth_char, fifth_char, sixth_char, seventh_char, eighth_char, ninth_char, tenth_char;
Scanner scan = new Scanner (System.in);
evens = 0;
odds = 0;
zeros = 0;
exit_loop = "no"; //initializing while loop
while (exit_loop.equals ("no"))
{
System.out.println ("Choose any number between 0 and 2,147,483,647. Don't include commas please.");
user_num = scan.next ();
我被困在这一带;“first_char”没有返回我想要/需要的数字值
//assigning a variable to each character of user_num
first_char = user_num.lastIndexOf(0);
/*second_char = user_num.charAt(1);
third_char = user_num.charAt(2);
fourth_char = user_num.charAt(3);
fifth_char = user_num.charAt(4);
sixth_char = user_num.charAt(5);
seventh_char = user_num.charAt(6);
eighth_char = user_num.charAt(7);
ninth_char = user_num.charAt(8);
tenth_char = user_num.charAt(9);*/
//copy every character into a string value
first_char_string = String.valueOf(first_char);
if (first_char == 2 || first_char == 4 || first_char == 6 || first_char == 8)
{
evens++;
}
else if (first_char_string.equals("1") || first_char_string.equals("3") || first_char_string.equals("5") || first_char_string.equals("7") ||
first_char_string.equals("9"))
{
odds++;
}
else
zeros++;
} //ends while loop
System.out.println ("There are " +evens+ " even numbers, " +odds+ " odd numbers, and " +zeros+ "zeros in ");
scan.close ();
} //ends main method
} //ends class
您好,请看这一行:
user_num = scan.next (); // this will scan your user input, but does not jump to the next line
您可能需要使用:
user_num = scan.nextLine();
您在lastIndexOf(char)
方法中也犯了错误。
此方法需要一个字符。您可以为该方法提供一个int,例如:
first_char = user_num.lastIndexOf(0);
这是因为java将您的号码解释为ASCI号码。ASCI“0”表示的字符为空。您要做的是搜索字符“0”。例如:
first_char = user_num.lastIndexOf('0');
你的平局也是如此:
first_char == 2 ---> first_char == '2';
另一个通知。请使用不带下划线的驼峰格。您应该编写userNum而不是user_num。这是标准
还有一个通知。lastIndexOf()
方法将返回参数最后一次出现的次数。e、 g:
String test = "hello test";
test.lastIndexOf(e); // this will return 7 for it is the number ofthe last occurence of 'e'
我想您应该使用charAt(0)
这将返回指定位置的字符
最后通知。为什么要比较表示数字的字符值?
为什么不采取以下措施:
first_char = user_num.lastIndexOf('0');
int userNum=Integer.valueOf(yourCharHere)
更新
如果我正确理解了您的评论,那么下面代码段中的“X”是由用户定义的
first_char=userNum.charAt(X)
如果我没弄错,你就有问题了,因为你不知道用户输入的时间有多长。我将执行以下操作,而不是将单个数字指定给变量:
first_char = user_num.lastIndexOf('0');
//将字符串解析为int
int userNum=Integer.valueOf(yourUserInputHere);
Arraylist singleDigits=新的Arraylist()
//反转数字列表
集合。反向(单位数)
输入示例:13467
您的列表应该如下所示:[1]、[3]、[4]、[6]、[7]
这使您能够通过调用以下命令获取单个数字:
singleDigits.get(0) -> [1];
singleDigits.get(3) -> [6];
...
我希望这有助于大家看看这一行:
user_num = scan.next (); // this will scan your user input, but does not jump to the next line
您可能需要使用:
user_num = scan.nextLine();
您在lastIndexOf(char)
方法中也犯了错误。
此方法需要一个字符。您可以为该方法提供一个int,例如:
first_char = user_num.lastIndexOf(0);
这是因为java将您的号码解释为ASCI号码。ASCI“0”表示的字符为空。您要做的是搜索字符“0”。例如:
first_char = user_num.lastIndexOf('0');
你的平局也是如此:
first_char == 2 ---> first_char == '2';
另一个通知。请使用不带下划线的驼峰格。您应该编写userNum而不是user_num。这是标准
还有一个通知。lastIndexOf()
方法将返回参数最后一次出现的次数。e、 g:
String test = "hello test";
test.lastIndexOf(e); // this will return 7 for it is the number ofthe last occurence of 'e'
我想您应该使用charAt(0)
这将返回指定位置的字符
最后通知。为什么要比较表示数字的字符值?
为什么不采取以下措施:
first_char = user_num.lastIndexOf('0');
int userNum=Integer.valueOf(yourCharHere)
更新
如果我正确理解了您的评论,那么下面代码段中的“X”是由用户定义的
first_char=userNum.charAt(X)
如果我没弄错,你就有问题了,因为你不知道用户输入的时间有多长。我将执行以下操作,而不是将单个数字指定给变量:
first_char = user_num.lastIndexOf('0');
//将字符串解析为int
int userNum=Integer.valueOf(yourUserInputHere);
Arraylist singleDigits=新的Arraylist()
//反转数字列表
集合。反向(单位数)
输入示例:13467
您的列表应该如下所示:[1]、[3]、[4]、[6]、[7]
这使您能够通过调用以下命令获取单个数字:
singleDigits.get(0) -> [1];
singleDigits.get(3) -> [6];
...
我希望这有助于首先创建包含奇数/偶数/零数的集合:
Set<Integer> odds = "13579".chars().boxed().collect(Collectors.toSet());
Set<Integer> evens = "02468".chars().boxed().collect(Collectors.toSet());
Set<Integer> zero = "0".chars().boxed().collect(Collectors.toSet());
逐个字符分析number
以找出每个集合匹配的位数:
long numberOfOdds = number.chars().filter(odds::contains).count();
long numberOfEvens = number.chars().filter(evens::contains).count();
long numberOfZeros = number.chars().filter(zero::contains).count();
最后,显示结果:
System.out.println("There are " + numberOfEvens + " even numbers, " + numberOfOdds + " odd numbers, and " + numberOfZeros + " zeros in ");
首先创建包含奇数/偶数/零数的集合:
Set<Integer> odds = "13579".chars().boxed().collect(Collectors.toSet());
Set<Integer> evens = "02468".chars().boxed().collect(Collectors.toSet());
Set<Integer> zero = "0".chars().boxed().collect(Collectors.toSet());
逐个字符分析number
以找出每个集合匹配的位数:
long numberOfOdds = number.chars().filter(odds::contains).count();
long numberOfEvens = number.chars().filter(evens::contains).count();
long numberOfZeros = number.chars().filter(zero::contains).count();
最后,显示结果:
System.out.println("There are " + numberOfEvens + " even numbers, " + numberOfOdds + " odd numbers, and " + numberOfZeros + " zeros in ");
JavaScript不是Java。。。至少其他问题都有这两个标签,这一个只通过提供Java代码提到JavaScript。JavaScript不是Java。。。至少其他问题都有这两个标签,这一个只通过提供Java代码提到JavaScript。嘿,汤姆,谢谢你的建议!不过我还是有点困惑。我不会选择整数“userNum”得到什么,这将取决于用户,这就是为什么这对我来说有点棘手的原因。我不知道什么数字在什么地方(char值),所以我希望找到一种方法从用户选择的“userNum”中提取出来。抱歉,如果我不能很好地解释,我只是感到困惑。@Tom Wellrock,那个符号被称为下划线;)嘿,汤姆,谢谢你的建议!不过我还是有点困惑。我不会选择整数“userNum”得到什么,这将取决于用户,这就是为什么这对我来说有点棘手的原因。我不知道什么数字在什么地方(char值),所以我希望找到一种方法从用户选择的“userNum”中提取出来。抱歉,如果我不能很好地解释,我只是感到困惑。@Tom Wellrock,那个符号被称为下划线;)