在Python中,我可以在一行中定义两个带有数组的变量。
>>>[a,b] = [1,2]
>>>a
1
>>>b
2
我如何用Java做同样的事情?
我在PCT类中有几个变量类型是最终的。有没有办法像Python一样在一行中定义它们?以下格式显然不适用于Java。我可以单独定义它们,但它会调用parseFile方法两次,我想避免。
public class PCT {
final int start;
final int stop;
public PCT (File file) {
//......
//......
// the following statement does not compile
[start, stop] = parseFile(file);
}
public int[] parseFile(File f) {
int[] aa = new int[2];
// ....
// ....
return aa;
}
}
答案 0 :(得分:6)
您可以像这样定义多个变量:
double a,b,c;
一行中的每个变量也可以分配给特定值:
double a=3, b=5.2, c=3.5/3.5;
另一个方面是,当您在同一行中准备公共类型变量时,从右侧分配的变量可以在左侧分配变量,例如:
int a = 4, b = a+1, c=b*b;
注意,您也可以通过保留在同一行来对变量进行算术运算。
答案 1 :(得分:5)
这是不可能的,但您也不需要两次致电parseFile
。
编写如下代码:
int [] temp = parseFile(file);
start = temp[0];
stop = temp[1];
Python(我相信)支持多个返回值。 Java遵循C约定,因此不允许它。由于这不是语言的一部分,因此它的语法也不是,这意味着如果您正在进行多次返回,则需要像temp
数组这样的严重错误。
答案 2 :(得分:2)
如果你的意思是行;只要在两个语句之间放置一个分号,它们就会被执行,就像它们之间有一条新行一样,你可以调用:
OrderedObject<T>
您甚至可以通过删除注释(该范围到行尾)将整个文件压缩到oneliner上。作为Java编译器的第一步,通常从Java文件(在内存中)中删除间距(空格,制表符,换行符......)。
但你可能对 singe statement 更感兴趣。不支持像a = 1; b = 2;
这样的Sytax(至少目前不支持)。你可以在网上创建:
[start, stop] = parseFile(file);
答案 3 :(得分:0)
也许这就是你要找的东西:
int array[] = {1,2};
Java array assignment (multiple values)
如果您希望明确指定每个元素,我不认为您可以在一个作业中执行此操作,与下面的二维示例中的类似概念一样。这就像杰里米的答案所指出的那样。
答案 4 :(得分:0)
当声明多个相同类型的变量时,您可以执行以下操作:
int a = 1, b = 2, c = 3; //etc.
答案 5 :(得分:0)
也许
public class PCT
{
final Point pos; // two ints!
public PCT (File file)
{
pos = parseFile(file);
}
public int[] parseFile(File f)
{
Point aa = new Point();
// ....
// ....
return aa;
}
}