我正在教编程课程的介绍,我们正在使用Java.我想帮助学生学习如何将书面课程规范翻译成工作程序.我会提供书面说明.它以方法签名的形式指定类的名称和行为.我希望学生将其转换为可用的Java类.
我可以为它们提供一个接口并让它们实现接口,但这会破坏部分目的:读取和解释书面功能规范文档.我希望他们从头开始编写课程.然后我想评估他们的工作.
我检查他们工作的想法是这样的:根据我自己的界面编译他们的Java类文件.如果它编译,那么至少我会知道他们已经遵循了所有方法合同,我可以开始测试功能.如果它没有编译,我将收到一条错误消息,报告哪些方法没有正确实现.
即使源代码中最初未指定Java类文件,如何强制对接口编译Java类文件?
换句话说,假设我有以下两个文件:
public interface FooInterface
{
...
}
Run Code Online (Sandbox Code Playgroud)
public class Foo
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想编译Foo,就像它明确地实现了FooInterface一样.但我不想手动编辑一堆源代码文件才能这样做.我该怎么做?
要解决有关使用书面规范与提供界面的价值的问题,这是一个假设的规范文档:
使用以下方法编写一个名为Foo的类:
最旧的:年龄(int []) - > int
给定一个年龄数组,返回最高的一个.anyAdults:ages(int []) - > boolean
给定一个年龄数组,返回它们中的任何一个是18还是更旧.
国际海事组织,这具有很大的教育效益.学生必须批判性地评估他们的课程是否符合规范.如果我提供了接口文件,他们可以拔掉他们的大脑并让编译器告诉他们他们是否遵循规范.使用编译器作为认知拐杖是与较差的学生目前(不成功)用来平衡他们的牙套和括号的技术.
我正在尝试CUDA编程的"hello world"程序:将两个向量相加.这是我尝试过的程序:
#include <cuda.h>
#include <stdio.h>
#define SIZE 10
__global__ void vecAdd(float* A, float* B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main()
{
float A[SIZE], B[SIZE], C[SIZE];
float *devPtrA, *devPtrB, *devPtrC;
size_t memsize= SIZE * sizeof(float);
for (int i=0; i< SIZE; i++) {
A[i] = i;
B[i] = i;
}
cudaMalloc(&devPtrA, memsize);
cudaMalloc(&devPtrB, memsize);
cudaMalloc(&devPtrC, memsize);
cudaMemcpy(devPtrA, A, memsize, cudaMemcpyHostToDevice);
cudaMemcpy(devPtrB, B, memsize, cudaMemcpyHostToDevice);
vecAdd<<<1, SIZE>>>(devPtrA, devPtrB, devPtrC);
cudaMemcpy(C, devPtrC, memsize, cudaMemcpyDeviceToHost); …Run Code Online (Sandbox Code Playgroud) 我的JavaFX应用程序具有fx:id为的Label location。它在FXML文件中定义。当我尝试运行该应用程序时,出现以下错误:
java.lang.IllegalArgumentException:无法将javafx.scene.control.Label字段sample.Controller.location设置为java.net.URL
我正在将JDK 12与JavaFX 11.0.2一起使用。
我在SO上看到了其他答案,说这是由locationLabel 类型冲突引起的。例如,它可以在FXML文件中声明为Label,但在Java代码中则是别的(在本例中为java.net.URL)。但是,正如您在下面的代码中看到的那样,我没有在任何地方使用URL类。
将fx:id更改为其他名称(例如loc)会使错误消失,因此location必须是一个“魔术”名称。
是什么原因造成的?
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.Pane?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
<Label fx:id="location" layoutX="133.0" layoutY="146.0" text="Output" />
</children>
</Pane>
Run Code Online (Sandbox Code Playgroud)
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application
{
@Override
public void start(Stage primaryStage) throws Exception
{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 400, …Run Code Online (Sandbox Code Playgroud) 我正在创建一个将填写给定语法的程序.现在我正在模拟像这样的"各种单词":
public class WordDescriptor {
public static final String noun = "N";
public static final String plural = "p";
public static final String nounPhrase = "h";
public static final String usuParticipleVerb = "V";
public static final String transitiveVerb = "t";
public static final String intransitiveVerb = "i";
public static final String adjective = "A";
public static final String adverb = "v";
public static final String conjunction = "C";
public static final String preposition = "P";
public static final String interjection …Run Code Online (Sandbox Code Playgroud) Java的ArrayList在需要时动态扩展自己.扩展发生时它会添加多少个元素?
它是否将旧数组复制到新数组中,还是以某种方式将两者连接在一起?
我正在编写一个模拟人工神经网络的程序.我设置了以下类和接口:
public interface Neuron
{
}
// Input neuron
public class INeuron implements Neuron
{
}
// Output and hidden neuron
public class ONeuron implements Neuron
{
}
public interface Layer
{
public ArrayList<Neuron> getNeurons();
}
// Input layer
public class ILayer implements Layer
{
ArrayList<INeuron> neurons = new ArrayList<INeuron>();
public ArrayList<Neuron> getNeurons()
{
return neurons;
}
// other stuff appropriate to the input layer
}
Run Code Online (Sandbox Code Playgroud)
编译器报告"无法从ArrayList <INeuron>转换为ArrayList <Neuron>".
我试过转换东西.例如:ArrayList<Neuron> neurons = new ArrayList<INeuron>().但这似乎只是将同样的错误转移到了班级的不同部分.
我不明白为什么INeuron不能被隐含地投射到Neuron,因为INeuron是神经元的一个子类型.
我正在寻找一些关于Unix/Linux和开源软件历史的视频.我知道(并且有)Revolution OS.
还有其他人吗?
编辑:我是老师,需要资源来向学生展示.
编辑:我在Google Video上找到了Revolution OS .
我知道其他人已经询问过如何在CSS文件中使用class和id,比如
所以我知道class和id之间的语义和语法差异:id应该用于只使用一次的元素,而class应该用于共享属性的元素.
但这不是一个严格的规则,是吗?将id用于多个元素有什么危害?或者只使用一个班级?毕竟,不是"一个元素"只是一个集合(类)只有一个东西吗?
如果我违反规则,浏览器的CSS解释器会抛出错误吗?我没见过它.
那么为什么我们同时拥有id和class?为什么不只是一个或另一个并称之为好?