Как использовать введенное пользователем значение «X» для печати всех значений, меньших или больших, чем значение «X» из массива - PullRequest
0 голосов
/ 15 апреля 2019

Итак, в основном я пытаюсь распечатать все значения из массива, которые меньше или больше, чем введенное пользователем значение. Например, если я введу «500», он напечатает все значения, которые меньше этого, и тогда я смогу сделать то же самое для больших значений. Как мне идти вперед с этим? В настоящее время он использует поток для печати значений, которые меньше или больше, чем «30»

В настоящее время я пробовал несколько методов, таких как использование совершенно новой переменной значения для введенного пользователем значения. Мне трудно представить, как двигаться дальше.

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

Основной класс


import java.util.Scanner;

public class MainClass {

        public static void main( String [] args ) {
            Scanner sc = new Scanner( System.in );
            Container list = new Container();

        System.out.println("Enter amount (1-5)");
        int count = sc.nextInt();
        sc.nextLine();

        for (int i = 0; i < count; i++) { 
            System.out.println("Enter Type"); 
            String type = sc.nextLine();

            System.out.println("Enter Type2");
            String type2 = sc.nextLine();   

            System.out.println("Enter value");
            int value = sc.nextInt();
            sc.nextLine();

            MoreInfo moreInfo = new MoreInfo(type, type2);
            Info info = new Info(moreInfo, value);
            list.Add(info);     


        }

        list.PrintAll();
        System.out.println("Smaller than 30");
        list.PrintSmaller();
        System.out.println("Larger than 30");
        list.PrintLarger();



    }
}

Контейнерный класс, который содержит методы для min и max Эти методы можно найти снизу класса

import java.util.ArrayList;
import java.util.Iterator;

public class Container {
    private MoreInfo moreInfo;
    public ArrayList <Info> InfoArray;

    public Container() {
        InfoArray = new ArrayList <Info>();
        this.setMoreInfo(moreInfo);
    }


    public MoreInfo getMoreInfo() {
        return moreInfo;
    }


    public void setMoreInfo(MoreInfo moreInfo) {
        this.moreInfo = moreInfo;
    }


    public boolean Add(Info addInfo) {
        return InfoArray.add(addInfo);
    }




public void PrintAll() {

        Iterator<Info> iter = InfoArray.iterator();

        while(iter.hasNext()){
            Info info = iter.next();

            System.out.println( info.getValue() + info.getMoreInfo().getType2() + info.getMoreInfo().getType());

        }
    }


public void PrintSmaller() {

    InfoArray.stream().filter(e -> e.getValue() < 30()).forEach(System.out::println);

    }

public void PrintLarger() {

    InfoArray.stream().filter(e -> e.getValue() > 30()).forEach(System.out::println);
    }
}

следующий класс «MoreInfo» содержит переменные

package test;

public class MoreInfo {

    private String type;
    private String type2;

    public MoreInfo(String Type, String Type2) {
        this.type2 = Type2;
        this.type = Type;
    }

    public String getType() {
        return this.type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getType2() {
        return type2;
    }

    public void setType2(String Type2) {
        this.type2 = type2;
    }

    public String toString(){
        return type + " " + type + " " + type2;
    }
}

Последний класс "Info" также содержит переменные

package test;



public class Info {

        private MoreInfo moreInfo;
        private int value;

        public Info(MoreInfo moreInfo, int value) {
            this.moreInfo = moreInfo;
            this.value = value;
        }

        public MoreInfo getMoreInfo() {
            return moreInfo;
        }

        public int getValue() {
            return value;
        }
        public String toString(){
            return moreInfo + " " + value;

        }

}   

Подумал, что всем будет проще понять, если я опубликую полный код, а не его фрагменты.

Спасибо за помощь!

1 Ответ

0 голосов
/ 15 апреля 2019

Сохраните число, в котором вы хотите найти меньшие числа, в переменную, скажем,

int arg;
Scanner sc = new Scanner(System.in)
arg = sc.nextInt()

Измените ваш отпечаток меньшего размера и напечатайте большие функции, чтобы иметь 1 параметр, например так ...

public void PrintSmaller(int number) {

    InfoArray.stream().filter(e -> e.getValue() < number()).forEach(System.out::println);

    }

public void PrintLarger(int number) {

    InfoArray.stream().filter(e -> e.getValue() > number()).forEach(System.out::println);
    }
}

Передать аргумент в вызовы метода ...

System.out.println("Smaller than " + arg);
list.PrintSmaller(arg);
System.out.println("Larger than " + arg);
list.PrintLarger(arg);
...