Java教程 第40页

Java While语句-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java While语句

Java教程 – Java While语句 while循环在其控制条件为真时重复语句或块。 Java while循环 这是它的一般形式: while(condition) { // body of loop } 条件可以是任何布尔表达式。 只要条件条件为真,循环的主体将被执行。 如果只重复单个语句,花括号是不必要的。 这里是一个while循环,从10减少,打印十行“tick”: public class Main { public static void main(String args[]) { int n = 10; while (n > 0) { System.out.println("n:" + n); n--; } } } 当你运行这个程序,你会得到以下结果: 例子 以下代码显示如何使用while循环来计算和。 public class Main { public static void main(String[] args) { int limit = 20; int sum = 0; int i = 1; while (i <= limit) { sum += i++; } System.out.println("sum = " + sum); } } 上面的代码生成以下结果。 例2 如果条件是 false ,则 while 循环的正文将不会执行。例如,在以下片段中,从不执行对 println()的调用: public class Main { public static void main(String[] argv) { int a = 10, b = 20; while (a > b) { System.out.println("This will not be...

JavaFX 树视图-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX 树视图

JavaFX教程 – JavaFX树视图 TreeView UI控件为我们提供了一种渲染树结构的方法。 树具有包含所有分层值的根节点。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeView; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { TreeItem<String> rootItem = new TreeItem<>("Root"); rootItem.setExpanded(true); TreeItem<String> item = new TreeItem<>("A"); rootItem.getChildren().add(item); item = new TreeItem<>("B"); rootItem.getChildren().add(item); TreeView<String> tree = new TreeView<>(rootItem); StackPane root = new StackPane(); root.getChildren().add(tree); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } } 上面的代码生成以下结果。 创建树视图 当创建树视图时,我们通常从构建根的TreeItem对象开始。 然后我们将根添加到树视图,并创建其他树项目对象并将它们添加到根。 我们可以通过setGraphic方法或使用它的构造函数来创建一个图形图标到树项目。 图标的建议大小为16×16。 对根项目调用的setExpanded方法定义树视图项目的初始外观。 以下代码从本地文件系统创建动态树。 import java.io.File; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeView; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } private TreeItem<File> createNode(final File f)...

Java 浮点类型-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 浮点类型

Java教程 – Java浮点类型 float类型 float 类型表示单精度数字。 float 类型变量在需要一个分数组件时很有用。下面是一些浮动变量声明的例子: float high, low; Java浮点值,大小和字面值 float是32位宽,其范围约为 1.4e-045 至 3.4e + 038 。 Java中的浮点字面值默认为双精度。要指定浮点字面值,必须在该常量后面附加一个 F 或 f 。 以下代码显示了如何声明浮点字面值。 public class Main { public static void main(String args[]) { float d = 3.14159F; System.out.print(d);//3.14159 } } 上面的代码生成以下结果。 Java双精度类型 Java double类型表示双精度数字。 double是64位宽,其范围大约从4.9e-324到1.8e + 308。 这里是一个程序使用双变量来计算圆的面积: public class Main { public static void main(String args[]) { double pi, r, a; r = 10.8888; // radius of circle pi = 3.1415926; // pi, approximately a = pi * r * r; System.out.println("Area of circle is " + a); } } 输出: 例子 双精度型数字具有带小数部分的小数值。它们可以以标准或科学记数法表示。标准符号由一个整数数字组成,后面跟一个小数点,后面跟一个小数点。例如, 2.0 , 3.14159 和 0.6667 。 public class Main { public static void main(String args[]) { double d = 3.14159; System.out.print(d);//3.14159 } } 上面的代码生成以下结果。...

Java 文件操作-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 文件操作

Java IO教程 – Java文件操作 文件创建 我们可以使用File类的createNewFile()方法创建一个新文件: File dummyFile = new File("test.txt"); boolean fileCreated = dummyFile.createNewFile(); 该createNewFile()方法创建一个新的空文件,如果有指定名称的文件不存在。 如果文件已成功创建,则返回true;否则,返回false。如果发生I/O错误,该方法将抛出IOException。 我们还可以在默认的临时文件目录或目录中创建一个临时文件。要在默认临时目录中创建临时文件,请使用File类的createTempFile()静态方法,该方法接受前缀和后缀以生成临时文件名。 File tempFile = File.createTempFile("abc", ".txt"); 文件夹创建 我们可以使用mkdir()或mkdirs()方法创建一个新目录。 仅当路径名中指定的父目录已存在时,mkdir()方法才创建目录。 File newDir = new File("C:\\users\\home"); 只有当C:\users目录已经存在时,newDir.mkdir()方法才会创建主目录。 newDir.mkdirs()方法将创建users目录(如果它不存在于C:驱动器中),它将在C:\users目录下创建主目录。 文件删除 我们需要使用File类的delete()方法来删除文件/目录。 目录必须为空,我们才能删除它。 如果文件/目录被删除,该方法返回true; 否则,返回false。 我们还可以延迟删除文件,直到JVM通过使用deleteOnExit()方法终止。 如果我们在程序中创建临时文件,当程序退出时要删除,这将非常有用。 立即删除dummy.txt文件 File dummyFile = new File("dummy.txt"); dummyFile.delete(); 在JVM终止时删除dummy.txt文件 File dummyFile = new File("dummy.txt"); dummyFile.deleteOnExit(); 文件重命名 要重命名文件,我们可以使用renameTo()方法,它使用一个File对象来表示新文件: boolean fileRenamed = oldFile.renameTo(newFile); 完整的源代码 import java.io.File; public class Main { public static void main(String[] argv) { // Rename old-dummy.txt to new_dummy.txt File oldFile = new File("old_dummy.txt"); File newFile = new File("new_dummy.txt"); boolean fileRenamed = oldFile.renameTo(newFile); if (fileRenamed) { System.out.println(oldFile + " renamed to " + newFile); } else { System.out.println("Renaming " + oldFile + " to " + newFile + " failed."); }...

Lucene 教程

http://www.w3cschool.cn/java/lucene-helloworld.html

JavaFX 时间轴动画-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX 时间轴动画

JavaFX教程 – JavaFX时间轴动画 通过更改节点的属性(如大小,位置和颜色等)创建动画。 时间轴动画会随着时间的推移更新属性值。 JavaFX支持关键帧动画。动画状态场景在某些时间由开始和结束关键帧声明。 什么是关键值? JavaFX允许我们创建可以内插的定时事件预定义的值来生成动画。 例如,为了产生淡出效果,我们将目标为节点的不透明属性来内插其值,从完全不透明的1开始到在一段时间内是透明的0。 以下代码定义了一个KeyValue,它以从1开始并以0结尾的矩形的不透明度属性为目标。 Rectangle rectangle = new Rectangle(0, 0, 50, 50); KeyValue keyValue = new KeyValue(rectangle.opacityProperty(), 0); KeyValue对象实际上不内插值。它定义属性的开始和结束值。 默认情况下,KeyValue对象将有一个线性插值器。 KeyValue可以用不同的方式定义类型的内插器,如线性,ease in, 或ease out。 以下代码定义了一个键值,它将使用Interpolator.EASE_OUT内插器从左到右将矩形动画化100像素。渐弱将减慢结束键值之前的渐变。 Rectangle rectangle = new Rectangle(0, 0, 50, 50); KeyValue keyValue = new KeyValue(rectangle.xProperty(), 100, Interpolator.EASE_OUT); 什么是关键帧? 当动画发生时,每个步骤称为由KeyFrame对象定义的关键帧。 关键帧在javafx.util.Duration中定义的时间段内插入在KeyValue对象中定义的键值。 当创建KeyFrame对象时,构造函数需要一个定时持续时间(Duration)。KeyFrame构造函数接受一个或多个键值。 假设我们要从左上角到右下角移动一个矩形,我们定义一个具有1000毫秒持续时间的关键帧和两个表示矩形的x和y属性的关键值。 以下代码定义关键帧,以一秒或1000毫秒将矩形的左上角(0,0)移动到点(100,100)。 Rectangle rectangle = new Rectangle(0, 0, 50, 50); KeyValue xValue = new KeyValue(rectangle.xProperty(), 100); KeyValue yValue = new KeyValue(rectangle.yProperty(), 100); KeyFrame keyFrame = new KeyFrame(Duration.millis(1000), xValue, yValue); 什么是时间轴? 时间轴是由许多KeyFrame对象组成的一个动画序列。每个KeyFrame对象按顺序运行。 时间轴是javafx.animation.Animation类的子类,它具有标准属性,如循环计数和自动反转。 循环计数是播放动画的次数。要无限期地播放动画,请使用值Timeline.INDEFINITE。 auto-reverse 属性是一个布尔标志,表示动画可以向后播放时间轴。 默认情况下,周期计数设置为1,自动反转设置为false。 要向时间轴对象添加关键帧,请使用getKeyFrames().addAll()方法。 以下代码演示了自动反转设置为true时无限期播放的时间轴。 Timeline timeline = new Timeline(); timeline.setCycleCount(Timeline.INDEFINITE); timeline.setAutoReverse(true); timeline.getKeyFrames().addAll(keyFrame1, keyFrame2); timeline.play(); 例子 /* * Copyright (c) 2011, 2012 Oracle and/or its affiliates. * All rights reserved. Use is subject to license terms. *...

JavaFX 转换-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX 转换

JavaFX教程 – JavaFX转换 JavaFX转换相关类位于javafx.scene.transform包中,并且是Transform类的子类。 一个变换是关于如何改变坐标系。 JavaFX支持以下类型的转换: Translation Rotation Scaling Shearing JavaFX Transformations可以在三个坐标上操作,从而允许我们创建三维3D对象和效果。 JavaFX实现了x轴和y轴以及x,y和z轴的变换构造函数。 要创建二维2D效果,请仅指定x和y坐标。要创建3D效果,请指定所有三个坐标。 转换 平移变换将节点沿着一个轴相对于其初始位置从一个位置移动到另一个位置。木琴条的初始位置由x,y和z坐标定义。 import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Text Fonts"); Group rectangleGroup = new Group(); Scene scene = new Scene(rectangleGroup, 550, 250); Rectangle rect = new Rectangle(); rect.setWidth(100); rect.setHeight(100); rect.setTranslateX( 135); rect.setTranslateY(11.0); rectangleGroup.getChildren().add(rect); primaryStage.setScene(scene); primaryStage.show(); } } 上面的代码生成以下结果。 旋转 旋转变换将围绕指定的枢轴点移动节点。 import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Text Fonts"); Group rectangleGroup = new Group(); Scene scene = new Scene(rectangleGroup,...

JavaFX 过渡-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX 过渡

JavaFX教程 – JavaFX过渡 JavaFX中的动画可以分为时间轴动画和过渡。 时间轴和过渡是javafx.animation.Animation类的子类。 JavaFX中的过渡提供了将动画合并到内部时间轴中的方法。JavaFX有内置的过渡动画,这是方便的类来执行常见的动画效果。这里是一些最常见的动画过渡类 javafx.animation.FadeTransition javafx.animation.PathTransition javafx.animation.ScaleTransition javafx.animation.TranslateTransition FadeTransition中定义的淡入淡出过渡目标是节点的不透明属性,用于淡入淡出的动画效果。 PathTransition中定义的路径过渡使节点能够跟随生成的路径。 ScaleTransition中定义的缩放过渡定位节点的scaleX,scaleY和scaleZ属性以调整节点大小。 TranslateTransition中定义的翻译过渡定位了节点的translateX,translateY和translateZ属性,以便在屏幕上移动节点。 褪色过渡 import javafx.animation.FadeTransition; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import javafx.util.Duration; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Group group = new Group(); Rectangle rect = new Rectangle(20,20,200,200); FadeTransition ft = new FadeTransition(Duration.millis(5000), rect); ft.setFromValue(1.0); ft.setToValue(0.0); ft.play(); group.getChildren().add(rect); Scene scene = new Scene(group, 300, 200); primaryStage.setScene(scene); primaryStage.show(); } } 上面的代码生成以下结果。 填充过渡 import javafx.animation.FillTransition; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.DropShadow; import javafx.scene.paint.Color; import javafx.scene.shape.Ellipse; import javafx.stage.Stage; import javafx.util.Duration; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) {...

JavaFX WebView-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX WebView

JavaFX教程 – JavaFX WebView JavaFX提供了一个GUI WebView(javafx.scene.web.WebView)节点,以将HTML5内容呈现到场景图形上。 WebView节点是一个小型浏览器。 我们可以使用以下代码加载网页并显示它。 WebView browser = new WebView(); WebEngine webEngine = browser.getEngine(); webEngine.load("http://mySite.com"); 完整的源代码 import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.concurrent.Worker; import javafx.concurrent.Worker.State; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.ScrollPane; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import javafx.stage.Stage; public class Main extends Application { @Override public void start(final Stage stage) { stage.setWidth(400); stage.setHeight(500); Scene scene = new Scene(new Group()); final WebView browser = new WebView(); final WebEngine webEngine = browser.getEngine(); ScrollPane scrollPane = new ScrollPane(); scrollPane.setContent(browser); webEngine.getLoadWorker().stateProperty() .addListener(new ChangeListener<State>() { @Override public void changed(ObservableValue ov, State oldState, State newState) { if (newState == Worker.State.SUCCEEDED) { stage.setTitle(webEngine.getLocation()); } } }); webEngine.load("http://www.w3cschool.cn"); scene.setRoot(scrollPane); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } 上面的代码生成以下结果。 WebEvents JavaFX Web...

Java 流组合-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 流组合

Java流 – Java流组合 reduce()操作组合流中的所有元素以产生单个值。 reduce操作采用两个称为种子(初始值)和累加器的参数。 累加器是一个函数。如果流是空的,种子是结果。 种子和一个元素被传递给累加器,它返回部分结果。然后将部分结果和下一个元素传递给累加器函数。 这重复,直到所有元素被传递到累加器。累加器返回的最后一个值是reduce操作的结果。 流相关接口包含两个称为reduce()和collect()的方法来执行通用reduce操作。 诸如sum(),max(),min(),count()等方法在IntStream,LongStream和DoubleStream接口中定义。 count()方法适用于所有类型的流。 Stream<T> 接口包含一个reduce()方法来执行reduce操作。该方法有三个重载版本: T reduce(T identity, BinaryOperator<T> accumulator) <U> U reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner) Optional<T> reduce(BinaryOperator<T> accumulator) 第一个版本的reduce()方法使用一个标识和一个累加器作为参数,并将流reduce为同一类型的单个值。 import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream() .reduce(0, Integer::sum); System.out.println(sum); } } 上面的代码生成以下结果。 例2 计算所有员工的收入总和。 import java.time.LocalDate; import java.time.Month; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { double sum = Employee.persons() .stream() .map(Employee::getIncome) .reduce(0.0, Double::sum); System.out.println(sum); } } class Employee { public static enum Gender { MALE, FEMALE } private long id; private String name; private Gender gender; private LocalDate dob; private double...