简体   繁体   English

只有偶数和只有奇数的字符串

[英]String of only even numbers and only odd numbers

I know there are already questions asking something similar to my question, but despite reading those, they don't quite do what I want. 我知道已经有一些问题在问与我的问题类似的东西,但是尽管阅读了这些内容,但它们并没有完全满足我的要求。 I am creating a code that takes a users input of a number between 0-100 (inclusive). 我正在创建一个代码,接受用户输入的0-100(含)之间的数字。 Whatever the number, it will print all the numbers leading up to that number and that number 无论数字是多少,它将打印出导致该数字和该数字产生的所有数字

EX: user input = 25 output = 012345678910111213141516171819202122232425 例如:用户输入= 25输出= 012345678910111213141516171819202122232425

I have that part working. 我有那部分工作。 Now I am supposed to use that string and create two new strings, one for only the odd and the other one for the even numbers. 现在,我应该使用该字符串并创建两个新字符串,一个仅用于奇数,另一个用于偶数。

EX: user input = 25 output: odd numbers: 135791113151719212325 & even numbers = 024681012141618202224 例如:用户输入= 25输出:奇数:135791113151719212325和偶数= 024681012141618202224

Here is my code so far: 到目前为止,这是我的代码:

import java.util.Scanner;

public class OddAndEven{
public String quantityToString() {
  Scanner number = new Scanner(System.in);
  int n = number.nextInt();
  String allNums = "";
  if ((n >= 0) && (n <= 100)) {
     for (int i = 0;i <= n; ++i)
     allNums = allNums + i;

     return allNums;
  }
  else {
     return "";
  }


}

  public void oddAndEvenNumbers(int num) {//Start of second method

     String allNums = ""; //String that quantityToString returns
     String odd = "";
     String even = "";

     if ((num >= 0) && (num < 10)) { //Looks at only single digit numbers
        for (int i = 0; i <= allNums.length(); i++) {
           if (Integer.parseInt(allNums.charAt(i))%2 == 0) { //trying to get the allNums string to be broken into individual numbers to evaluate
           even = even + allNums.charAt(i); //adding the even numbers of the string
           }
           else {
              odd = odd + allNums.charAt(i);
           }
        }
     }
     else { //supposed to handle numbers with double digits
        for (int i = 10; i <= allNums.length(); i = i + 2) {
           if (Integer.parseInt(allNums.charAt(i))%2 == 0) {
              even = even + allNums.charAt(i);
           }
           else {
              odd = odd + allNums.charAt(i);
           }
        }
     }
  System.out.println("Odd Numbers: " + odd);
  System.out.println("Even Numbers: " + even);

       }
public static void main(String[] args) {

System.out.println(new OddAndEven().quantityToString());
//System.out.println(new OddAndEven().oddAndEvenNumbers(allNums));
   //Testing     

  OddAndEven obj = new OddAndEven();
  System.out.println("Testing n = 5");
  obj.oddAndEvenNumbers(5);
  System.out.println("Testing n = 99");
  obj.oddAndEvenNumbers(99);

I know my problem is at the part when its supposed to take the string apart and evaluate the individual numbers, but I don't know what to do. 我知道我的问题在于应该将字符串拆开并评估各个数字,但是我不知道该怎么办。 (I've also tried substring() & trim()) Also I have not learned how to use arrays yet, so that is why I did not try to use an array. (我也尝试过substring()&trim())而且我还没有学会如何使用数组,因此这就是为什么我没有尝试使用数组的原因。

I think you can make it that way: 我认为您可以这样:

    int x = 20;
    StringBuilder evenNumberStringBuilder = new StringBuilder();
    StringBuilder oddNumberStringBuilder = new StringBuilder();
    for(int i =0 ; i<x+1; i++){
        if(i % 2 == 0)evenNumberStringBuilder.append(i);
        else oddNumberStringBuilder.append(i);
    }

    System.out.println(evenNumberStringBuilder);
    System.out.println(oddNumberStringBuilder);

Output: 输出:

02468101214161820
135791113151719

you are already taking the input as integer, so don't work with strings. 您已经将输入作为整数,所以不要使用字符串。 I recommend that to use this loop; 我建议使用此循环。

    Scanner number = new Scanner(System.in);

    System.out.print("Even Numbers: ");
    for (int i = 0; i <= number; i=i+2) {
     System.out.print(i);
    }

    System.out.println("");

    System.out.print("Odd Numbers: ");
    for (int i = 1; i <= number; i=i+2) {
     System.out.print(i);
    }

You can simply evaluate numbers while storing them in an allnumbers string, here's a functioning code: 您可以在将数字存储在allnumbers字符串中的同时简单地求值,这是一个起作用的代码:

    int x = 23; //user input
    String s=""; //contains all numbers from 0 to userinput
    String odd =""; //contains all odd numbers from 0 to userinput
    String even = ""; //contains all even numbers from 0 to userinput

    for(int i = 0 ; i< x+1 ; i++){
    s += i;
        if(i%2==0) //if i is an even number
            even += i;
        else //if i is an odd number 
            odd += i;
    }

    System.out.println(s); //displaying all numbers from 0 to user input
    System.out.println(odd); //displaying odd numbers from 0 to user input
    System.out.println(even); //displaying even numbers from 0 to user input

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM