Строковый массив Java с сеттером - PullRequest
2 голосов
/ 05 октября 2019

Я хотел создать простую программу для пользователя, которая вставит 3 строки в массив частных строк в классе, а затем распечатает его обратно, создав новый объект, используя ссылку на объект, но я думаю, что столкнулась с проблемой в установщике / получателе. (Довольно плохо знаком с классом и сеттером / получателем) Вот что у меня есть:

import java.util.Scanner;
public class Stringtest {
public static void main(String[] args)
{   Scanner input=new Scanner(System.in);


   Stringer Strung=new Stringer();

    System.out.println("Strings:"+Strung.print());


}
}
class Stringer
{   Scanner input=new Scanner(System.in);
    private String[] aa=new String[3];
    aa[0]="zero";
    aa[1]="one";
    aa[2]="two";

    Stringer()
    {}

{  System.out.println("Please enter 3 strings:");

    for(int i=0;i<4;i++)
    {
        aa[i]=input.next();
    }
}

public  void setaa(String[] a)
{
    aa=a;
}

public String[] getaa()
{
    return aa;
}

public void print(String[] a)
{
    for(int b=0;b<4;b++)
    {
        System.out.printf("%s",a[b]);
    }
}

}

1 Ответ

1 голос
/ 05 октября 2019
  1. Из-за заполнения массива при создании экземпляра класса вам не нужны никакие установщики. Требуется только получатель.
  2. Разделите логику от бегуна.
  3. Если вы просите пользователя ввести 3 строки, вы должны читать 3 раза, а не 4 раза.
  4. Всегда используйте array.length() во время цикла или используйте простой цикл for, в противном случае вы получите ошибку indexOfBoudException.
  5. Не понимаю, почему вы используете printf() при печати результатов.

    Мое решение:

    import java.util.Scanner;
    
    public class App {
        public static void main(String[] args) {
            App.run();
        }
    
        private static void run() {
            Stringer stringer = new Stringer();
            stringer.print(stringer.getStrings());
        }
    }
    
    class Stringer {
    
        private String[] strings = new String[3];
    
        Stringer() {
            System.out.println("Please enter 3 strings:");
            for (int i = 0; i < 3; i++) {
                Scanner scanner = new Scanner(System.in);
                strings[i] = scanner.next();
            }
        }
    
        String[] getStrings() {
            return strings;
        }
    
        void print(String[] strings) {
            System.out.println("Strings are:");
            for (String string : strings) {
                System.out.println(string);
            }
        }
    }
    
...