Печать ArrayList из отдельного основного класса Java - PullRequest
0 голосов
/ 17 июня 2020

У меня есть задание, в котором много вопросов, и единственные, с которыми, кажется, у меня возникают проблемы, - это те, которые связаны со списками ArrayLists. Мне нужно использовать отдельный основной метод для ввода и вывода информации.

Это мой класс

import java.util.ArrayList;

public class HailstoneSequence {

private int n;

public HailstoneSequence(int n) {
    this.n = n; 
}

public double getn() {
    return n;
}

    public static ArrayList<Integer> getHailstoneSequence(int n){
        ArrayList<Integer> list = new ArrayList<Integer>();
        //int i = 0; 
        while (n != 1);
        for (int s : list) {
            try {
            if(n == 1) break;   
            if(n % 2 == 0) {
                System.out.println(n + " is even, so I take half: " + (n / 2));
            }
            else 
                System.out.println(n + " is odd, so I make 3n+1: " + ((n * 3)+1));
           // i++;
            }
            catch (Exception error) {
                while (n <= 1) {

                    System.out.println("You did not enter a valid positive, greater than 1 integer. Please try again: ");
                    System.out.println();

                }
             }   
        }
        return list;
    }
}  

и это основной класс (который не работает)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;


public class TestHailstoneSequence {

    @SuppressWarnings("resource")
    public static void main(String[]args){    

        Scanner input = new Scanner(System.in);

        System.out.println("The Hailstone Sequence takes a number and if it odd it multiples it by 3 and adds 1,"
                + "\nit divides it by 2 and carries on until it reaches 1. \nPlease enter a positive number"
                + " (greater than 1) to generate the Hailstone Sequence: ");

        int n = input.nextInt();

        HailstoneSequence aHailstoneSequence = new HailstoneSequence(n);

        System.out.println(Arrays.toString(aHailstoneSequence.list));

         }
    }

Пожалуйста, помогите мне понять, как распечатать результаты

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Для вашего текущего случая основной метод будет выглядеть примерно так:

import java.util.Scanner;


public class TestHailstoneSequence {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("The Hailstone Sequence takes a number and if it odd it multiples it by 3 and adds 1,"
                + "\nit divides it by 2 and carries on until it reaches 1. \nPlease enter a positive number"
                + " (greater than 1) to generate the Hailstone Sequence: ");

        int n = input.nextInt();
        input.close(); // do not forget to close the resource

        // if you use static method in your HailstoneSequence class you can remove
        // field with name "n" from that class and you don't need to create an object in this case
        // Also I'd rename the class from HailstoneSequence to something like HailstoneSequenceCalculator
        System.out.println(HailstoneSequence.getHailstoneSequence(n));

    }
}
0 голосов
/ 17 июня 2020

Вы объявили метод getHailstoneSequence как stati c one, вы должны вызвать его и сохранить в переменной, если вам нужна другая операция, и напечатать следующим образом:

ArrayList<Integer> list = HailstoneSequence.getHailstoneSequence(n);
System.out.println(list);
...