Строка только четных чисел и только нечетных чисел - PullRequest
0 голосов
/ 04 марта 2019

Я знаю, что уже есть вопросы, задающие что-то похожее на мой вопрос, но, несмотря на их чтение, они не совсем делают то, что я хочу.Я создаю код, который принимает пользовательский ввод числа от 0 до 100 (включительно).Каким бы ни был номер, он напечатает все числа, ведущие к этому номеру и этому номеру

EX: пользовательский ввод = 25 выходных данных = 012345678910111213141516171819202122232425

у меня эта часть работает,Теперь я должен использовать эту строку и создать две новые строки, одну для нечетных, а другую для четных чисел.

EX: пользовательский ввод = 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 ()) Также я еще не научился использовать массивы, поэтому я не пытался использовать массив.

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

вы уже принимаете ввод как целое число, поэтому не работайте со строками.Я рекомендую использовать этот цикл;

    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);
    }
0 голосов
/ 04 марта 2019

Вы можете просто оценивать числа, сохраняя их в строке 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
0 голосов
/ 04 марта 2019

Я думаю, вы можете сделать это так:

    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
...