下面是一个Java程序,可以让用户不断输入1-100之间的整数,并将它们添加到集合中,直到集合中所有数据和超过200为止:
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> list = new ArrayList<>(); int sum = 0; while (sum <= 200) { System.out.print("请输入一个1-100之间的整数:"); int num = scanner.nextInt(); if (num < 1 || num > 100) { System.out.println("输入的数字不在1-100范围内,请重新输入!"); continue; } list.add(num); sum += num; } System.out.println("集合中的元素为:" + list); System.out.println("集合中所有数据和为:" + sum); } }
程序首先创建了一个Scanner对象和一个ArrayList对象,用于存储用户输入的数字。然后定义了一个sum变量,用于记录集合中所有数字的和。
程序使用while循环,当集合中所有数字的和超过200时,循环结束。在循环中,程序先提示用户输入一个1-100之间的整数,然后使用Scanner对象读取用户输入的数字。如果输入的数字不在1-100范围内,则程序会提示用户重新输入。如果输入的数字在1-100范围内,则程序将该数字添加到集合中,并将该数字加到sum变量中。
循环结束后,程序输出集合中的所有元素以及集合中所有数字的和。
如果你想对程序进行一些优化,可以考虑以下几点:
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> list = new ArrayList<>(); int sum = 0; int num; do { System.out.print("请输入一个1-100之间的整数:"); num = scanner.nextInt(); if (num < 1 || num > 100) { System.out.println("输入的数字不在1-100范围内,请重新输入!"); } else { list.add(num); sum += num; } } while (sum <= 200); System.out.println("集合中的元素为:" + list); System.out.println("集合中所有数据和为:" + sum); } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> list = new ArrayList<>(); int sum = 0; int num; do { System.out.print("请输入一个1-100之间的整数:"); num = scanner.nextInt(); if (num < 1 || num > 100) { System.out.println("输入的数字不在1-100范围内,请重新输入!"); } else { list.add(num); sum += num; } } while (sum <= 200); System.out.print("集合中的元素为:"); for (int i : list) { System.out.print(i + " "); } System.out.println(); System.out.println("集合中所有数据和为:" + sum); } }
import java.util.*; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); int sum = 0; int num; try (Scanner scanner = new Scanner(System.in)) { do { System.out.print("请输入一个1-100之间的整数:"); num = scanner.nextInt(); if (num < 1 || num > 100) { System.out.println("输入的数字不在1-100范围内,请重新输入!"); } else { list.add(num); sum += num; } } while (sum <= 200); } System.out.print("集合中的元素为:"); for (int i : list) { System.out.print(i + " "); } System.out.println(); System.out.println("集合中所有数据和为:" + sum); } }
通过以上几点优化,程序变得更加简洁、易读和安全
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> list = new ArrayList<>(); int sum = 0; int num; do { System.out.print("请输入一个1-100之间的整数:"); num = scanner.nextInt(); if (num < 1 || num > 100) { System.out.println("输入的数字不在1-100范围内,请重新输入!"); } else if (list.contains(num)) { System.out.println("集合中已经包含该元素,请重新输入!"); } else { list.add(num); sum += num; } } while (sum <= 200); System.out.print("集合中的元素为:"); for (int i : list) { System.out.print(i + " "); } System.out.println(); System.out.println("集合中所有数据和为:" + sum); } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Set<Integer> set = new HashSet<>(); int sum = 0; int num; do { System.out.print("请输入一个1-100之间的整数:"); num = scanner.nextInt(); if (num < 1 || num > 100) { System.out.println("输入的数字不在1-100范围内,请重新输入!"); } else if (set.contains(num)) { System.out.println("集合中已经包含该元素,请重新输入!"); } else { set.add(num); sum += num; } } while (sum <= 200); System.out.print("集合中的元素为:"); for (int i : set) { System.out.print(i + " "); } System.out.println(); System.out.println("集合中所有数据和为:" + sum); } }
以上是一些可以优化程序的方法,可以根据实际需求选择适合的方法来优化程序。
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Set<Integer> set = new HashSet<>(); int sum = 0; int num; int minNum = 1; int maxNum = 100; int maxSum = 200; do { System.out.printf("请输入一个%d-%d之间的整数:", minNum, maxNum); num = scanner.nextInt(); if (num < minNum || num > maxNum) { System.out.printf("输入的数字不在%d-%d范围内,请重新输入!%n", minNum, maxNum); } else if (set.contains(num)) { System.out.println("集合中已经包含该元素,请重新输入!"); } else { set.add(num); sum += num; } } while (sum <= maxSum); System.out.print("集合中的元素为:"); for (int i : set) { System.out.print(i + " "); } System.out.println(); System.out.println("集合中所有数据和为:" + sum); } }
import java.util.*; public class Main { public static void main(String[] args) { int minNum = 1; int maxNum = 100; int maxSum = 200; if (args.length >= 3) { minNum = Integer.parseInt(args[0]); maxNum = Integer.parseInt(args[1]); maxSum = Integer.parseInt(args[2]); } Scanner scanner = new Scanner(System.in); Set<Integer> set = new HashSet<>(); int sum = 0; int num; do { System.out.printf("请输入一个%d-%d之间的整数:", minNum, maxNum); num = scanner.nextInt(); if (num < minNum || num > maxNum) { System.out.printf("输入的数字不在%d-%d范围内,请重新输入!%n", minNum, maxNum); } else if (set.contains(num)) { System.out.println("集合中已经包含该元素,请重新输入!"); } else { set.add(num); sum += num; } } while (sum <= maxSum); System.out.print("集合中的元素为:"); for (int i : set) { System.out.print(i + " "); } System.out.println(); System.out.println("集合中所有数据和为:" + sum); } }
可以在命令行中输入如下命令运行程序:
java Main 1 100 200
这样就可以将输入数字的范围设置为1-100,最大数据和值设置为200。如果不指定命令行参数,则会使用程序中的默认值。
原文链接:codingdict.net