实现输入任意多的数,最后相加得和。
下附两种方法。
一种是老师上午上机课讲过的方法,直接运用循环中每个输入流中的数相加,附代码如下:
import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { int nextValue, sum = 0; Scanner kbInput = new Scanner(System.in); kbInput.useDelimiter("\s"); try { while (kbInput.hasNextInt()) { nextValue = kbInput.nextInt(); sum += nextValue; }
kbInput.close(); } catch (Exception e) { e.printStackTrace(); } System.out.println(sum); } }
其中主要应用了 Boolean hasNextInt()来判断输入流下一个是否为整型和 Scanner useDelimiter(String pattern)将扫描器的分隔模式设置为从指定 String 构造的模式。
第二种方法是我在上礼拜三上完课后首先想到的方法,附代码如下:
import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; public class ScannerTest2 { public static void main(String[] args) { // TODO Auto-generated method stub int sum = 0; ArrayList<Integer> num = new ArrayList<>(); Scanner input = new Scanner(System.in); input.useDelimiter("\s"); // ArrayList 接收数字 for (int i = 0; input.hasNextInt(); i++) { num.add(input.nextInt()); } // 迭代器 Iterator<Integer> it = num.iterator(); while (it.hasNext()) { sum += it.next(); } System.out.println(sum); } }
我的想法是:
要输入任意多个数,我会用ArrayList去接收它们,所以用了for循环。同时也查了API用Boolean hasNextInt()判断输入流中的下一个字符,然后最后利用迭代器让ArrayList中的数据相加,实现该功能。
结果如下:
以上为我的第三次作业。
期末设计:(还在商讨中……),待续……