Java学习笔记14---使用标志位控制循环

使用标志位控制循环

前面提到了控制循环的常用技术:计数器控制的循环.另一种控制循环的常用技术是在读取和处理一个集合的值时指派一个特殊值.这个特殊的输入值也成为标志值(sentinel value),用以表明循环的结束.如果一个循环使用标志值来控制它的执行,他就称为标志位控制的循环(sentinel-controlled loop).

在循环控制中,不要使用浮点值来比较值是否相等.因为浮点值都是某些值的近似值,使用它们可能导致不精确的循环次数和不准确的结果.

输入和输出重定向
输入重定向指从文件读取输入,而不是从键盘.
输出重定向指将输出发送给文件,而不是屏幕.

SentineValue类代码在文末,在F:\workspace\Welcome\bin目录下新建input.txt文件,内容如下:

package welcome;

import java.util.Scanner;
/*
 * 用来读取和计算个数不确定的整数之和,输入0则表示输入结束
 */
public class SentinelValue {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.print("输入一个整数,若输入0将退出: ");
        int data = in.nextInt();

        int sum = 0;
        while (data != 0) {
            sum = sum + data;

            System.out.print("输入一个整数,若输入0将退出:");
            data = in.nextInt();
        }
        System.out.println("The sum is " + sum);
    }
}
时间: 2025-01-02 04:20:06

Java学习笔记14---使用标志位控制循环的相关文章

Java学习笔记14

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中clone()方法是如何定义的: protected native Object clone() throws CloneNotSupportedException; 我们看到clone()方法前用了native来修饰,说明native方法的效率一般来说高于Java中的非native方法.其次用了 prote

我的java学习笔记(14)关于反射(part 3)

1.java.lang.reflect包中的Array类允许动态地创建数组. 2.在调用Array类中的静态方法newInstance是需要提供两个参数,一个是数组的元素类型,一个是数组的长度. 3.Class类的getComponentType方法可以确定数组对应的类型. 4.整型数组类型int[]可以被转换成Object,但不能转换成对象数组. 相关的实例代码 import java.lang.reflect.*; import java.util.*; public class test

java学习笔记 --- 多线程(多线程的控制)

1.线程休眠   public static void sleep(long millis) public class ThreadSleep extends Thread { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(getName() + ":" + x + ",日期:" + new Date()); // 睡眠 // 困了,我稍微休息1

JAVA学习笔记-二分法排序(增强for循环)

package MyErFenPaiXu; public class Mycode { public static void main(String[] args){ int[] a ={18,63,25,46,3,0,99,1,2}; for(int j=0;j<a.length-1;j++){ //这里的意思为不断的比较,次数只要不小于5次就能遍历出想要的结果. for(int i=0;i<a.length-1-j;i++){ //遍历一次,一个大数会被移到最后的位置. if(a[i]&g

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

Java学习笔记之接口

一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(String msg); } 定义接口使用关键字interface 修饰符interface前面的public可以省略,如果省略,则采用默认访问控制,即只有在相同包结构的代码才可以访问此接口 接口不可以有构造方法(区别于类中的构造方法) 接口里面的所有成员,包括常量.方法等都是public访问权限,所以在

springmvc学习笔记(14)-springmvc校验

springmvc学习笔记(14)-springmvc校验 springmvc学习笔记14-springmvc校验 校验理解 springmvc校验需求 环境准备 配置校验器 在pojo中添加校验规则 捕获和显示校验错误信息 分组校验 本文主要介绍springmvc校验,包括环境准备,校验器配置,pojo张添加校验规则,捕获和显示检验错误信息以及分组校验简单示例. 校验理解 项目中,通常使用较多是前端的校验,比如页面中js校验.对于安全要求较高点建议在服务端进行校验. 服务端校验: 控制层con

java学习笔记 第二篇 核心技术(二)

第十四章 集合类 集合类用来存放对象的引用.继承关系如下图: 14.1 Collection 接口 是层次结构中的根接口,构成Collection的单位称为元素.Collection接口不能直接使用,但该接口提供了添加元素.删除元素.管理数据的方法. Collection接口常用方法: 14.2 List 集合 包括List接口以及List集合的所有实现类.List集合中的元素允许重复,各元素循序就是对象插入的顺序 1.List接口,两个重要方法: get(int index): 获取指定索引位