首页 > 解决方案 > 只有偶数和只有奇数的字符串

问题描述

我知道已经有一些问题提出了与我的问题类似的问题,但是尽管阅读了这些问题,但它们并没有完全按照我的意愿行事。我正在创建一个代码,该代码需要用户输入 0-100(含)之间的数字。无论数字是多少,它都会打印出该数字和该数字之前的所有数字

例如:用户输入 = 25 输出 = 012345678910111213141516171819202122232425

我有那部分工作。现在我应该使用该字符串并创建两个新字符串,一个仅用于奇数,另一个用于偶数。

例如:用户输入 = 25 输出:奇数:135791113151719212325 & 偶数 = 024681012141618202224

到目前为止,这是我的代码:

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

我知道我的问题在于它应该将字符串分开并评估各个数字,但我不知道该怎么做。(我也尝试过 substring() 和 trim()) 另外我还没有学会如何使用数组,所以这就是我没有尝试使用数组的原因。

标签: javastringfor-loopif-statementmethods

解决方案


我认为你可以这样做:

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

输出:

02468101214161820
135791113151719

推荐阅读