我如何获取用户输入的数字并单独处理其数字?

时间:2016-11-02 15:19:16

标签: java

我提示用户输入一个号码并尝试确定该号码中偶数,奇数和零的数量

elementA

我被困在这个地区; " first_char"没有返回我想要/需要的数字值。

host-element

2 个答案:

答案 0 :(得分:0)

嗨看看这一行:

<div class="tag-group"> 
  <p> 
   <a href="/tag/beer">beer</a> 
  </p> 

  <p>
    <a href="/tag/cheese">cheese</a>
  </p>
</div>

您可能想要使用:

user_num = scan.next (); // this will scan your user input, but does not jump to the next line

你的user_num = scan.nextLine(); 方法也犯了一个错误。 这个方法需要一个char。你为这个方法提供了一个例如:

lastIndexOf(char)

这是有效的,因为java会将您的号码解释为ASCI号码。由ASCI代表的字符&#34; 0&#34;一片空白。你想要做的是搜索角色&#39; 0&#39;。如下所示:

first_char = user_num.lastIndexOf(0);

同样的平等:

first_char = user_num.lastIndexOf('0');

另一个通知。请使用驼峰案例而不是下划线。而不是user_num你应该写userNum。这是标准。

另一个通知。 first_char == 2 ---> first_char == '2'; 方法将返回参数最后一次出现的次数。 e.g:

lastIndexOf()

我认为你想使用String test = "hello test"; test.lastIndexOf(e); // this will return 7 for it is the number ofthe last occurence of 'e' 这会返回指定位置的特征

最后通知。为什么要比较代表数字的字符值? 为什么不这样做:

int userNum = Integer.valueOf(yourCharHere)。

<强>更新

如果我正确理解了您的评论,那么您的&#39; X&#39;在下面的代码段中由用户

定义

first_char = userNum.charAt(X);

如果我说得对你有问题,因为你不知道用户的输入有多长。我没有将各个数字指定给变量,而是执行以下操作:

//将String解析为int     int userNum = Integer.valueOf(yourUserInputHere);     Arraylist singleDigits = new ArrayList()&lt;&gt ;;

charAt(0)

//撤消您的数字列表    Collections.reverse(singleDigits);

示例输入://This goes through all digits of your number starting with the last digits while (userNum > 0) { singleDigits.add( userNum % 10); userNum = userNum / 10; } 您的列表应如下所示:13467

这使您可以通过调用以下方式获得单个数字:

[1],[3],[4],[6],[7]

我希望有帮助

答案 1 :(得分:0)

首先创建包含奇数/偶数/零数字的集合:

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());

然后从用户那里获得输入

Scanner scan = new Scanner(System.in);
System.out.println("Choose a number:");
String number = scan.next();
scan.close();

逐个字符地解析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 ");