Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何获取用户输入的数字并分别处理其数字?_Java - Fatal编程技术网

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,那个符号被称为下划线;)