class Point2D
{
friend ostream& operator<< (ostream&, const Point2D&);
protected:
int x; //can sort by x
int y; //can sort by y
double dist; //can sort by dist
public:
Point2D () {x=0; y=0;}
Point2D (int a, int b) {x=a; y=b;}
void setX (int);
void setY (int);
void setDist();
double getDist() const;
int getX ();
int getY ();
}
int main()
{
vector<Point2D> vect;
sort (vect.begin(), vect.end());
//Print all vector elements
for (int x=0; x<vect.size(); x++)
cout << vect[x] << endl; …Run Code Online (Sandbox Code Playgroud) 在Java的Graphics2D类中,它有一个transform方法。
public abstract void transform(AffineTransform Tx)
Run Code Online (Sandbox Code Playgroud)
这是根据文档的描述:
根据后指定先应用的规则与此 Graphics2D 中的 Transform 组合一个 AffineTransform 对象。如果当前Transform是Cx,则与Tx合成的结果是新的Transform Cx'。Cx' 成为该 Graphics2D 的当前变换。通过更新的变换 Cx' 变换点 p 相当于先通过 Tx 变换 p,然后通过原始变换 Cx 变换结果。换句话说,Cx'(p) = Cx(Tx(p))。如有必要,会制作 Tx 的副本,因此对 Tx 的进一步修改不会影响渲染。
我读了好几遍了,但还是不明白它的作用。我也尝试过寻找其他来源,但关于 g2d 的转换方法的内容并不多。
所以我的问题是:转换到底做什么?我们什么时候使用它?
如果有人能以简化的方式解释它,那就太好了。
我正在使用Java中的Regex,我想匹配一个出现0或1个点的字符串..所以我希望任何带有单点或无点的字符串都返回true,带有2个或更多点的字符串返回false.
根据Java Docs:
X?X,曾经或根本没有
所以我有以下内容:
String str = "abc.def";
System.out.println(str.matches(".?"));
Run Code Online (Sandbox Code Playgroud)
我期待str匹配.0或1次,但它打印false.
我的问题:我错过了解释的含义?吗?我该怎么做才能让它匹配0或1次?
我是java的新手.我只学习JPanel和JFrame.我从java软件解决方案中得到了这个说明:
"框架的包装方法根据其内容适当地设定尺寸 - 在这种情况下,框架的尺寸适合其所包含的面板的尺寸."
所以我写了这段代码:
public static void main (String [] args){
JFrame frame = new JFrame("test");
JPanel panel = new JPanel();
JLabel label1= new JLabel("");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
//frame.setSize(1000, 500);
frame.getContentPane().add(panel);
Color darkBlue = new Color(8,40,94);
panel.setSize(1000, 500);
panel.setBackground(darkBlue);
}
Run Code Online (Sandbox Code Playgroud)
但它的结果是一个非常小的窗口,我应该用鼠标最大化它来查看内容但是当我设置框架大小时,每件事情都很棒!我使用Ubuntu.那么这个问题的原因是什么?
有几种方法可以用Java执行String转换,有些人(包括我自己)更喜欢连接一个空字符串来进行转换:
例:
char ch = 'A';
String str = "" + ch; //gets character value and append to str
Run Code Online (Sandbox Code Playgroud)
但是,空字符串的顺序对我来说始终是个谜。以下将成功执行String转换:
str = ch + "";
str = ch + "" + ch;
Run Code Online (Sandbox Code Playgroud)
但不是以下内容:
str = ch + ch + ""; //if (ch + "") gives us "A", shouldn't this be "65A"?
Run Code Online (Sandbox Code Playgroud)
e:为安全起见,我们总是可以将空String放在前面,但是我想知道当(空)字符串放在其他位置(例如在中间或后面)时Java如何解释串联。
如果你觉得这个问题非常基础,请原谅我.我试了几个小时,只是似乎不明白为什么我的代码不起作用.我只想将一些int值插入int pointer并打印出来.
int val, x;
int *ptr;
ptr = malloc(sizeof(int));
do
{
scanf("%d", &val);
*ptr = val;
ptr++;
}while(val < 20);
for(x=0; x<5; x++) //Print values *ptr
{
printf("ptr[%d]: %d\n", x, *ptr);
ptr++;
}
Run Code Online (Sandbox Code Playgroud)
代码可以编译.但输出是错误的.
输入:4 5 6 7 8 20
输出:
ptr[0]: 20
ptr[1]: 4063428
ptr[2]: 62261273
ptr[3]: 134267354
ptr[4]: 4067081
Run Code Online (Sandbox Code Playgroud) 我们知道Array对象(数组)有一个length属性,它在Java中声明为:
public final int length;
Run Code Online (Sandbox Code Playgroud)
它被声明为final,因此不需要访问器,除非创建一个新数组,否则我们不能更改length的值.
我的问题是:我很好奇Java是如何实现数组类的,以便它们能够在第一次length声明它时赋值final?
实现如何?
注意:我不是问如何更改数组的长度.我问它是如何实现的,以便可以更新最终属性的值.
要初始化2D数组,通常我们可以这样做:
int matrix[3][4] = { {1,1,1,1}, {2,2,2,2}, {3,3,3,3} };
Run Code Online (Sandbox Code Playgroud)
但是,当我使用各种组合对其进行测试时,以下代码确实编译出了我的期望:
int matrix[3][4] = {1,2,3,4,5,6,7};
Run Code Online (Sandbox Code Playgroud)
当我以2D表格形式打印输出时,我得到:
1,2,3,4,
5,6,7,0,
0,0,0,0,
Run Code Online (Sandbox Code Playgroud)
我明白为什么剩下的值都是零.
我的问题是:这是通过假设超过行数的数字总是"流"到下一行来初始化2D数组的合法方法之一吗?或者这是我在C++中应该避免的另一个陷阱?
我知道C++中的struct和class非常相似,并且struct成员默认具有公共访问权限,而类成员具有私有访问权等等.等等.
但是,由于struct实例可以像这样初始化:
struct MyStruct{
int a;
int b;
int c;
};
MyStruct s1 = {1, 2, 3}; //a=1, b=2, c=3
MyStruct s2 = {}; //a=0, b=0, c=0
Run Code Online (Sandbox Code Playgroud)
在C++中为类做同样的事情是否安全?例如:
class MyClass{
int a;
int b;
int c;
};
MyClass c1 = {1, 2, 3}; //a=1, b=2, c=3
MyClass c2 = {}; //a=0, b=0, c=0
Run Code Online (Sandbox Code Playgroud)
问题:我知道我们可以使用构造函数,如果我初始化像struct实例这样的类实例,是否有任何陷阱?如果我使用这种方法将数据成员初始化为其默认值(例如0表示int,null表示指针),这是一个安全的操作吗?
当我们需要一个对象的String表示时,我们可以覆盖该toString()方法.但是,toString()当我们可以定义一个返回字符串的新方法时,覆盖的真正好处和原因是什么?
请看下面的例子:
class One
{
private String name;
public One(String _name)
{
name = _name;
}
@Override public String toString()
{
return name;
}
}
class Two
{
private String name;
public Two(String _name)
{
name = _name;
}
public String printMyClass() //Self-defined to print class details
{
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,printMyClass()自定义似乎与之相同toString().
所以我的问题是:为什么我们仍然使用toString()?