2015-10-24 7 views
2

Я работаю над простым вопросом JAVA в одном из моих курсов в колледже. Я нахожусь в тупике по этой программе. Я покажу то, что у меня есть, и задаю вопрос, на который я должен ответить. Я также рассмотрел аналогичный вопрос в StackOverflow, НО это не та же проблема, поэтому он НЕ помог. Программа мне нужно написать это:Вывод суммы четных чисел между двумя целыми числами

Написать программу, которая использует «а» петли выполнить следующие действия:

) быстрое пользователю ввести два целых числа:. FirstNum 'и «SecondNum» (firstNum должен быть меньше второгоNum)

b.) Вывести все нечетные числа между 'firstNum' и 'secondNum' включительно.

c.) Выведите сумму всех четных чисел между «firstNum» и «secondNum» включительно.

Это то, что я до сих пор ... (мне еще нужно вычислить четные числа и суммировать их)

//import classes 
import java.util.*; 

public class chapter5no9 
{ 
    static Scanner console = new Scanner(System.in); 

    public static void main(String[] args) 
    { 

    //Part A 
    int firstNum; 
    int secondNum; 
    int sumEven; 

    System.out.println("Please enter an integer: "); 
    firstNum = console.nextInt(); 

    System.out.println("Please enter another integer less than the first integer: "); 
    secondNum = console.nextInt(); 

    //Part B 
    if (firstNum < secondNum) 
    { 
     System.out.print("Your second number is greater than the first. So Please re-enter: "); 
     secondNum = console.nextInt(); 
    } 
    else 
    { 
     System.out.print("Odd Numbers: "); 
     firstNum++; 
     while (firstNum > secondNum) 
     { 
      if (secondNum % 2 != 0) 
      { 
       System.out.print(" " + secondNum); 
      } 
      secondNum++; 
     } 

     System.out.println(); 
     System.out.print("Sum of Even Numbers: "); 
     firstNum++; 
     while (firstNum > secondNum) 
     { 
      if (secondNum % 2 != 0) 
      { 
       System.out.print(" " + secondNum); 
      } 
      secondNum++; 
     } 
    } 
} 

}

+2

Вы должны действительно попытаться узнать от других вопросов и ответов. Неразумно думать, что вы найдете здесь свой * точный вопрос. И если вы делаете это, вероятно, ваш профессор пытается поймать мошенников. – ChiefTwoPencils

+1

«firstNum должен быть меньше второгоNum», а 'firstNum Andreas

+1

Вам действительно нужно выработать логику своего собственного кода и посмотреть, как он отличается от того, что вы ожидаете от него. Попытайтесь оценить код вручную для конкретных конкретных примеров и пойти по строкам. – Linus

ответ

1

Я создал переменную loopCounter для обработки требуемых итераций без изменения значений, введенных пользователем. Следующие изменения были внесены в ваш код.

Часть A: добавлен цикл while для проверки ввода пользователя. Также изменилась логика в выражении if.

Часть B: используется один цикл, чтобы напечатать нечетные числа, а общее количество четных чисел

//Part A 
    int firstNum; 
    int secondNum; 
    int sumEven=0; 

    System.out.println("Please enter an integer: "); 
    firstNum = input.nextInt(); 

    System.out.println("Please enter another integer less than the first integer: "); 
    secondNum = input.nextInt(); 

    //Part B 

    //validate input in a loop 
    while(true) 
    { 
    if (firstNum > secondNum) 
    { 
     System.out.print("Your second number is larger than the first. So Please re-enter: "); 
     secondNum = input.nextInt(); 
    } 
    else 
    { 
     break; 
    } 
    } 

     System.out.print("Odd Numbers: "); 
     int loopCounter=firstNum; 
     while(loopCounter<secondNum) 
     { 
     if (loopCounter%2!=0) 
     { 
      System.out.print(" " + loopCounter); 
     }//end if 
     else 
     { 
      sumEven+=loopCounter; 
     }//end else 
     loopCounter++; 
     } 

     System.out.println(); 
     System.out.print("Sum of Even Numbers: ");  
     System.out.print(sumEven); 

    } 
0

Проблема заключается в вашей логике. У вас есть это, если заявление:

if (firstNum < secondNum) 
{ 
    System.out.print("Your second number is greater than the first. So Please re-enter: "); 
    secondNum = console.nextInt(); 
} 

, который проверяет, если второе число больше, чем первый (который вы хотите, чтобы это было), а затем просит их повторно ввести. Вы хотите проверить if (secondNum < firstNum). Вам необходимо будет отменить все ваши заявления while и if, которые сравнивают secondNum с firstNum.

У вас есть это if (secondNum % 2 != 0), чтобы проверить нечетные числа, что верно, но вы скопировали его, чтобы проверить четные числа, которые не сработают, вам также нужно будет изменить это.

Тогда вы вывода всех четных целых чисел внутри цикла, когда на самом деле вы хотите, чтобы добавить его к evenSum переменной, и вывод, что на конце цикла:

System.out.println("The sum of all even integers is: " + evenSum); 

Это должно быть достаточно, чтобы помочь вам, я не собираюсь писать вам домашнее задание, это не то, что мы делаем здесь.

1

Я хотел бы разделить две проблемы проверки ввода и вычисления результата. Вот как я бы вычислить его:

int sum = IntStream.rangeClosed(firstNum, secondNum).filter(i -> i % 2 == 0).sum(); 
0
package hello.world; 
import java.util.Scanner; 

public class HelloWorld { 


    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     int number ; 
     int X = 0; 
     System.out.print("enter a number plz : "); 
     number = sc.nextInt(); 
     while (X <= number){ 
     System.out.println(X); 
     X ++; 
     } 
    } 
} 
+0

Пожалуйста, добавьте больше описания, чтобы сделать его хорошим. Прямо сейчас это свалка кода. – Raju

Смежные вопросы