ArrayList 的正数和负数
Positive and negative numbers with ArrayList
如何区分正数和负数?我有这个代码:
import java.util.ArrayList;
import java.swing.JOptionPane;
public class Test {
public static void main(String[] args) {
ArrayList al = new ArrayList();
int num=Integer.parseInt(JOptionPane.showInputDialog("How many numbers?"));
for (int i=0 ; i < num ; i++) {
al.add(Integer.parseInt(JOptionPane.showInputDialog("What numbers?")));
}
}
}
假设我想添加 5 个数字。 -2, -7, 8, 4, -1
我需要输出 Positive = 8, 4
和 Negative = -2, -7, -1
如果您只需要数组的输出,那么遍历数组一次就可以轻松快速地工作,即使对于大型数组也是如此。这样,您就可以使用 StringBuilder 对象来处理您的输出。
StringBuilder pos = new StringBuilder();
StringBuilder neg = new StringBuilder();
pos.append("Positive = ");
neg.append("Negative = ");
//note that 0 will be considered positive
for (int i = 0; i < al.size(); i++) {
if (al.get(i) >= 0) {
pos.append(al.get(i) + ", ");
} else {
neg.append(al.get(i) + ", ");
}
}
//handles the extra "," at end of strings
pos.deleteCharAt(pos.length() - 2);
neg.deleteCharAt(neg.length() - 2);
System.out.println(pos.toString() + " and " + neg.toString());
如果您想做比简单输出更复杂的事情,我建议您使用 if
逻辑将单个整数分配给两个单独的数组。
另外请注意,您可能应该告诉 ArrayList 期望的对象类型:
ArrayList<int> al = new ArrayList<>();
如果你使用Java8,你可以使用stream轻松的将它们分开:
List<Integer> positive = new ArrayList<>();
List<Integer> negative = new ArrayList<>();
al.stream().forEach(i -> (i < 0 ? negative : positive).add(i));
System.out.println(positive);
System.out.println(negative);
您有两个列表,一个包含正面,另一个包含负面。
您的问题的解决方案:
public class Test {
public static void printValues(ArrayList<Integer> list)
{
StringBuilder positive = new StringBuilder("Positive = ");
StringBuilder negative = new StringBuilder("Negative = ");
for (Integer i : list)
{
if (i >= 0)
{
positive.append(i).append(", ");
}
else
{
negative.append(i).append(", ");
}
}
positive.delete(positive.length() - 2, positive.length());
negative.delete(negative.length() - 2, negative.length());
System.out.println(positive.toString());
System.out.println(negative.toString());
}
public static void main(String[] args) {
ArrayList al = new ArrayList();
int num=Integer.parseInt(JOptionPane.showInputDialog("How many numbers?"));
for (int i=0 ; i < num ; i++) {
al.add(Integer.parseInt(JOptionPane.showInputDialog("What numbers?")));
}
printValues(al);
}
}
或者您可以使用 lambda 表达式和流
public class Test {
public static void printValues(ArrayList<Integer> list)
{
StringBuilder positive = new StringBuilder("Positive = ");
StringBuilder negative = new StringBuilder("Negative = ");
list.stream().forEach(i -> (i < 0 ? negative : positive).append(i).append(", "));
positive.delete(positive.length() - 2, positive.length());
negative.delete(negative.length() - 2, negative.length());
System.out.println(positive.toString());
System.out.println(negative.toString());
}
public static void main(String[] args) {
ArrayList al = new ArrayList();
int num=Integer.parseInt(JOptionPane.showInputDialog("How many numbers?"));
for (int i=0 ; i < num ; i++) {
al.add(Integer.parseInt(JOptionPane.showInputDialog("What numbers?")));
}
printValues(al);
}
}
如何区分正数和负数?我有这个代码:
import java.util.ArrayList;
import java.swing.JOptionPane;
public class Test {
public static void main(String[] args) {
ArrayList al = new ArrayList();
int num=Integer.parseInt(JOptionPane.showInputDialog("How many numbers?"));
for (int i=0 ; i < num ; i++) {
al.add(Integer.parseInt(JOptionPane.showInputDialog("What numbers?")));
}
}
}
假设我想添加 5 个数字。 -2, -7, 8, 4, -1
我需要输出 Positive = 8, 4
和 Negative = -2, -7, -1
如果您只需要数组的输出,那么遍历数组一次就可以轻松快速地工作,即使对于大型数组也是如此。这样,您就可以使用 StringBuilder 对象来处理您的输出。
StringBuilder pos = new StringBuilder();
StringBuilder neg = new StringBuilder();
pos.append("Positive = ");
neg.append("Negative = ");
//note that 0 will be considered positive
for (int i = 0; i < al.size(); i++) {
if (al.get(i) >= 0) {
pos.append(al.get(i) + ", ");
} else {
neg.append(al.get(i) + ", ");
}
}
//handles the extra "," at end of strings
pos.deleteCharAt(pos.length() - 2);
neg.deleteCharAt(neg.length() - 2);
System.out.println(pos.toString() + " and " + neg.toString());
如果您想做比简单输出更复杂的事情,我建议您使用 if
逻辑将单个整数分配给两个单独的数组。
另外请注意,您可能应该告诉 ArrayList 期望的对象类型:
ArrayList<int> al = new ArrayList<>();
如果你使用Java8,你可以使用stream轻松的将它们分开:
List<Integer> positive = new ArrayList<>();
List<Integer> negative = new ArrayList<>();
al.stream().forEach(i -> (i < 0 ? negative : positive).add(i));
System.out.println(positive);
System.out.println(negative);
您有两个列表,一个包含正面,另一个包含负面。
您的问题的解决方案:
public class Test {
public static void printValues(ArrayList<Integer> list)
{
StringBuilder positive = new StringBuilder("Positive = ");
StringBuilder negative = new StringBuilder("Negative = ");
for (Integer i : list)
{
if (i >= 0)
{
positive.append(i).append(", ");
}
else
{
negative.append(i).append(", ");
}
}
positive.delete(positive.length() - 2, positive.length());
negative.delete(negative.length() - 2, negative.length());
System.out.println(positive.toString());
System.out.println(negative.toString());
}
public static void main(String[] args) {
ArrayList al = new ArrayList();
int num=Integer.parseInt(JOptionPane.showInputDialog("How many numbers?"));
for (int i=0 ; i < num ; i++) {
al.add(Integer.parseInt(JOptionPane.showInputDialog("What numbers?")));
}
printValues(al);
}
}
或者您可以使用 lambda 表达式和流
public class Test {
public static void printValues(ArrayList<Integer> list)
{
StringBuilder positive = new StringBuilder("Positive = ");
StringBuilder negative = new StringBuilder("Negative = ");
list.stream().forEach(i -> (i < 0 ? negative : positive).append(i).append(", "));
positive.delete(positive.length() - 2, positive.length());
negative.delete(negative.length() - 2, negative.length());
System.out.println(positive.toString());
System.out.println(negative.toString());
}
public static void main(String[] args) {
ArrayList al = new ArrayList();
int num=Integer.parseInt(JOptionPane.showInputDialog("How many numbers?"));
for (int i=0 ; i < num ; i++) {
al.add(Integer.parseInt(JOptionPane.showInputDialog("What numbers?")));
}
printValues(al);
}
}