Как написать программу, которая может непрерывно запрашивать у пользователей входные данные, пока входные данные не будут соответствовать определенному требованию для выполнения кода? - PullRequest
0 голосов
/ 24 января 2019

Мне нужно написать программу, которая начинается с запроса целого числа в диапазоне 0

import java.util.*;
class ExamTesterNine{
  public static void main(String args[]){
   Scanner kbReader= new Scanner(System.in);
   int num=kbReader.nextInt();
   System.out.println("Enter an integer smaller than 20 and larger than 0");
   int result;
   int sum=0;

   if (!(num>0&&num<20)){
     return;
   }else{
     for(int i=1; i<=num; i++)
   sum=sum+i;

   int [] number= new int [num];
   for (int a=0; a<(number.length-1); a++ ){
     number[a]=a+1;
     System.out.print(number[a]+"+");}
   System.out.print(num+"="+sum);
   }

  }
}

Ответы [ 5 ]

0 голосов
/ 24 января 2019
import java.util.*;
class ExamTesterNine{
static int num;
public static void readInput() {
     System.out.println("Enter an integer smaller than 20 and larger than 0");
       Scanner kbReader= new Scanner(System.in);
       num=kbReader.nextInt();
       if (!(num>0&&num<20)){
           ExamTesterNine.readInput();
       }else {
           calculate(num); 
       }
   }
public static void calculate(int sum) {
    for(int i=1; i<=num; i++)
           sum=sum+i;
           int [] number= new int [num];
           for (int a=0; a<(number.length-1); a++ ){
             number[a]=a+1;
             System.out.print(number[a]+"+");}
           System.out.print(num+"="+sum);
}

  public static void main(String args[]){
  int result;
  int sum=0;
  ExamTesterNine.readInput();
    }
 }

 Are you expecting this?
  Out put:Enter an integer smaller than 20 and larger than 0
  23
  Enter an integer smaller than 20 and larger than 0
  34
  Enter an integer smaller than 20 and larger than 0
  56
  Enter an integer smaller than 20 and larger than 0
  45
  Enter an integer smaller than 20 and larger than 0
  15
  1+2+3+4+5+6+7+8+9+10+11+12+13+14+15=135
0 голосов
/ 24 января 2019

Есть много разных способов подойти к этому.Однако для начала ознакомления с циклами while я рекомендую этот простой метод:

System.out.println("Enter an integer smaller than 20 and larger than 0");
int num = kbReader.nextInt();

while(num > 20 || num < 0)
{
    System.out.println("That value does not meet the criteria. Please try again:");
    num = kbReader.nextInt();
}

До тех пор, пока не будет введено правильное значение, пользователю будет предложено повторить ввод.

0 голосов
/ 24 января 2019

ЭТО должно быть легко с do-while. Я не нахожусь в моем компиляторе сейчас, однако это вы должны добавить в свой код, если вы используете сканер

import java.util.*;
class ExamTesterNine{
public static void main(String args[]){
Scanner kbReader= new Scanner(System.in);
int num = 0;
System.out.println("Enter an integer smaller than 20 and larger than 0");
  do{
     num=kbReader.nextInt();
   } while(num<0 && num <20);

   int result;
   int sum=0;

   for(int i=1; i<=num; i++)
   sum=sum+i;

   int [] number= new int [num];
   for (int a=0; a<(number.length-1); a++ ){
     number[a]=a+1;
     System.out.print(number[a]+"+");}
   System.out.print(num+"="+sum);
   }

  }
}

Дайте мне знать, если это не так, я могу быстро войти в компилятор, однако do-while - это решение для вас.

0 голосов
/ 24 января 2019

Чтобы получить номер, попробуйте использовать чек, подобный этому

int number=0;
boolean flag;
while{
    flag=false;
    System.out.println("Enter a number smaller than 20 and greater than 0 : ");
    try{          
        number=kbReader.nextInt();
        flag=true;
    }catch(Exception e){ //catching the exception that occurs when an input other than integer is entered
        System.out.println("OOPS!!!only Integer is allowed :-("); 
    }
    if(flag==true && number>0 && number<20){
        break;
    }else{
        if(flag){
        System.out.println("Oops!!!only numbers in the range 0<number<20 is allowed...Re-enter again");
        }
    }
0 голосов
/ 24 января 2019

вам понадобится цикл while, так как вы не знаете, сколько раз будет введен неправильный ввод

while (true) {
  System.out.println("Enter an integer smaller than 20 and larger than 0");
  int num=kbReader.nextInt(); // get input
  // test
  if (goodInput (num)) {
      break;
  }
}
...