2016-02-25 3 views
0

Я новичок в программировании, и мы только что узнали ArrayLists в моем классе сегодня, и у меня есть простой вопрос для вас, ребята, я просто не могу найти его в заметках о том, что установить значение передачи равно. Суть этой практической программы состоит в том, чтобы принять объект Number (этот класс уже создан), а числа Numbers в ArrayList должны учитываться как коэффициенты, четкости и совершенные числа. Вот первые две строки программы, которые все, что вам нужно.ArrayList и значения передачи

import java.util.ArrayList; 
import static java.lang.System.*; 
public class NumberAnalyzer { 

    private ArrayList<Number> list; 

    public NumberAnalyzer() { 
     list = new ArrayList<Number>(); 
    } 

    public NumberAnalyzer(String numbers) { 

    } 

    public void setList(String numbers) { 

    } 

Что я должен установить (номера строки) в обоих NumberAnalyzer() и Setlist()? Заранее спасибо за ответ на вопрос Noob!

NumberAnalyzer test = new NumberAnalyzer("5 12 9 6 1 4 8 6"); 
    out.println(test); 
    out.println("odd count = "+test.countOdds()); 
    out.println("even count = "+test.countEvens()); 
    out.println("perfect count = "+test.countPerfects()+"\n\n\n"); 

Это класс Lab16b, который будет запускать программу. ^^

public class Number 
{ 
private Integer number; 
public Number() 
{ 
    number = 0; 
} 
public Number(int num) 
{ 
    number = num; 
} 
public void setNumber(int num) 
{ 
    number = num; 
} 
public int getNumber() 
{ 
    return 0; 
} 
public boolean isOdd() 
{ 
    return number % 2 != 0; 
} 
public boolean isPerfect() 
{ 
    int total=0; 
    for(int i = 1; i < number; i++) 
    { 
     if(number % i == 0) 
     { 
      total = total + i; 
     } 
    } 
    if(total == number) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
public String toString() 
{ 
    return ""; 
} 
} 

Категория номера. ^^

+0

Как выглядят 'String numbers'? Это строка, содержащая объекты, разделенные пробелами? –

+0

Строковые числа - это значение, которое я пытаюсь передать. Он был инициализирован. – user2948668

+0

Я не понимаю, что вы имеете в виду. Где вы его инициализировали? Проходит ли строка, чтобы выглядеть примерно так: «1 3 2 5 4 9»? –

ответ

1

Основываясь на информации, предоставленной вами, это то, что я чувствую. NumberAnalyzer должно выглядеть. Функция setList в настоящее время используется для принятия String и добавления чисел в нее в новый список.

public class NumberAnalyzer { 

    private List<Number> list; 

    public NumberAnalyzer() { 
     this.list = new ArrayList<Number>(); 
    } 

    public NumberAnalyzer(String numbers) { 
     setList(numbers); 
    } 

    public void setList(String numbers) { 
     String[] nums = numbers.split(" "); 
     this.list = new ArrayList<Number>(); 
     for(String num: nums) 
      list.add(new Number(Integer.parseInt(num))); 
    } 

} 
0

Проанализируйте, чтобы узнать что-то.

public static void main(String[] args) { 

    String temp = "5 12 9 6 1 4 8 6"; 
    NumberAnalyzer analyzer = new NumberAnalyzer(temp); 

    //foreach without lambda expressions 
    System.out.println("without Lambda"); 
    for (NeverNumber i : analyzer.getList()) { 
     i.print(); 
    } 
    //with the use of lambda expressions, which was introduced in Java 8 
    System.out.println("\nwith Lambda"); 
    analyzer.getList().stream().forEach((noNumber) -> noNumber.print()); 

    NeverNumber number = new NeverNumber(31); 
    number.print(); 
    number.setNumber(1234); 
    number.print(); 

} 

public class NumberAnalyzer { 

    private List<NeverNumber> list; //List is interface for ArrayList 

    public NumberAnalyzer(String numbers) { 
     String[] numb=numbers.split(" "); 
     this.list=new ArrayList<>(); 
     for (String i : numb) { 
      list.add(new NeverNumber(Integer.parseInt(i))); 
     } 
    } 

    public void setList(List<NeverNumber> numbers) { 
     List<NeverNumber> copy=new ArrayList<>(); 
     numbers.stream().forEach((i) -> { 
      copy.add(i.copy()); 
     }); 
     this.list=copy; 
    } 

    public List<NeverNumber> getList() { 
     List<NeverNumber> copy=new ArrayList<>(); 
     this.list.stream().forEach((i) -> { 
      copy.add(i.copy()); 
     }); 
     return copy; 
    } 

    public NeverNumber getNumber(int index) { 
     return list.get(index).copy(); 
    } 

} 

public class NeverNumber { //We do not use the names used in the standard library. 
    //In the library there is a class Number. 

    private int number; // If you can use simple types int instead of Integer. 

    public NeverNumber() { 
     number = 0; 
    } 

    public NeverNumber(int num) { 
     number = num; 
    } 

    private NeverNumber(NeverNumber nn) { 
     this.number=nn.number; 
    } 

    public void setNumber(int num) { 
     number = num; 
    } 

    public int getNumber() { 
     return this.number; 
    } 

    public boolean isOdd() { 
     return number % 2 != 0; 
    } 

    public boolean isPerfect() { 
     long end = Math.round(Math.sqrt(number)); //Method Math.sqrt(Number) returns a double, a method Math.round(double) returns long. 
     for (int i = 2; i < end + 1; i++) { 
      if (number % i == 0) { 
       return false; 
      } 
     } 
     return true; 
    } 

    public NeverNumber copy(){ 
     return new NeverNumber(this); 
    } 

    public void print() { 
     System.out.println("for: " + this.toString() + " isPer: " + this.isPerfect() + " isOdd: " + this.isOdd() + "\n"); 
    } 

    @Override //Every class in Java inherits from the Object class in which it is toString(), 
    //so we have to override our implementation. 
    public String toString() { 
     return this.number + ""; //The object of any class + "" creates a new object of the String class, 
     //that is for complex types, calls the toString() method implemented in this class, 
     //override the toString() from the Object class. If the runs, we miss class toString() 
     //calls from the Object class. 
    } 

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