这就是我在看的:
echo "A B C D E F G H I" | java Subset 3
我真的不明白这里有什么|或echo意味着什么.在阅读了一些堆栈溢出线程之后,我知道由于命令行参数不会转到System.in,echo有助于将它放在那里吗?(我对此真的有一个非常模糊的想法),并且|命令将"每个参数""逐个"提供给程序?
这很有吸引力,但是当我尝试在eclipse调试器中测试它们时,这就是我得到的:

我期待一些特别的东西,但所有部分都只是像任何正常的论点那样去args [].这有点令人困惑.
我正在尝试,但是一个问题:在wiki中,该算法的第3点说:
当一个带叉子的哲学家接收到一条请求消息时,如果它是干净的话,他会保留它,但是当它是脏的时候放弃它.如果他把叉子送过来,他会在这之前清理叉子
我试图理解为什么这不会导致死锁?如果一个哲学家有一个干净的叉子,并等待从邻近的餐馆/哲学家那里获得另一个干净的叉子,而他们也在等待叉子,这可以累积到一个死锁对吗?一个哲学家总是在等待另一个人的分叉?
ps:我是线程和并发的新手,把它作为一个学习项目.
编辑:给出叉子的实际位置,张贴此以询问叉子是否应该是可变的.pLeft,pRight是左右哲学家,fLeft和fRight是左右分叉.
private Fork giveFork(Philosopher diner) {
Fork forkToGive;
if (this.pLeft.equals(diner)) {
// give left fork to left philosopher
if (this.fLeft.isClean)
forkToGive = null; // don't give
else {
forkToGive = new Fork(this.fLeft.id, true); // give the fork
}
} else if (diner.pRight.equals(this)) {
// give right fork to right philosopher
if (this.fRight.isClean)
forkToGive = null;
else {
forkToGive = new Fork(this.fRight.id, true);
}
} else {
// default value , i'm not yet sure …Run Code Online (Sandbox Code Playgroud) 该程序检查简单的三角形类型:等边,等腰,直角等.但我得到了非常奇怪的结果.
我的代码:
#include <stdio.h>
#include <stdlib.h>
int comparator (const void * elem1, const void * elem2) {
int f = *((float*)elem1);
int s = *((float*)elem2);
if (f > s) return 1;
if (f < s) return -1;
return 0;
}
void checkTriangles(float *num){
float a = *num;
float b = *(num + 1);
float c = *(num + 2);
if((a*a + b*b)==c*c){
printf("right angled triangle");
}
else if(a==b || b==c || c==a){
printf("isosceles triangle");
}
else if(a==b && b==c){
printf("equilateral …Run Code Online (Sandbox Code Playgroud) 我的特殊情况处理了一个Point2D在我的项目中包含的本地jar中称为thats 的类,但是,我也注意到java有自己的Point2D内部java.awt.geom.我理解,对于这个特殊情况,因为我不导入java.awt.geom,所以当我写Point2D它将来自我自己的包?但是,如果我确实必须导入java.awt.geom或处于导入的位置,我在本地jar和java库中都有类似的命名类文件,那么会发生什么呢?
我正在学习斯卡拉课程,我正在尝试那里教的东西.所以现在我遇到这个列表,他们称之为"ConsList"?我试图给它一个尾递归的toString()方法.我想我必须保留像累加器这样的东西,但我不知道该怎么做.任何帮助都感激不尽.
这是我试过的:
/** a non-empty element/node of the list */
class Cons[T](val head: T, val tail: List[T]) extends List[T] {
def isEmpty = false;
override def toString() =
if(tail.isEmpty) "{" + head + "}"
else "{" + head + tail + "}"
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试这样做:
update student
set student_name=SUBSTRING(student_name, 0, 8)
where student_name like 'MAX%';
Run Code Online (Sandbox Code Playgroud)
因此,我的目的是用原始内容的前 8 个字符更新该列。
但该student_name列被设置为空值。
为什么会发生这种情况?有人可以帮我解决这个问题吗