小编use*_*460的帖子

排序具有多个排序标准的对象矢量

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)

c++ sorting overloading vector object

2
推荐指数
1
解决办法
813
查看次数

Graphics2D的transform方法有什么作用?

在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 geometry transform graphics2d

2
推荐指数
1
解决办法
4566
查看次数

Java Regex匹配零次或一次

我正在使用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 regex string

2
推荐指数
1
解决办法
2278
查看次数

JFrame的pack()方法不起作用(java,ubuntu)

我是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 ubuntu swing

2
推荐指数
1
解决办法
2319
查看次数

通过串联空字符串在字符串转换中的空字符串顺序

有几种方法可以用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如何解释串联。

java string string-concatenation string-conversion

2
推荐指数
1
解决办法
71
查看次数

将值赋给C int指针

如果你觉得这个问题非常基础,请原谅我.我试了几个小时,只是似乎不明白为什么我的代码不起作用.我只想将一些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)

c pointers

1
推荐指数
1
解决办法
432
查看次数

java如何为最终属性赋值

我们知道Array对象(数组)有一个length属性,它在Java中声明为:

public final int length;
Run Code Online (Sandbox Code Playgroud)

它被声明为final,因此不需要访问器,除非创建一个新数组,否则我们不能更改length的值.

我的问题是:我很好奇Java是如何实现数组类的,以便它们能够在第一次length声明它时赋值final

实现如何?


注意:我不是问如何更改数组的长度.我问它是如何实现的,以便可以更新最终属性的值.

java arrays implementation

1
推荐指数
1
解决办法
165
查看次数

2D阵列的意外初始化结果

要初始化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++ arrays initialization

1
推荐指数
1
解决办法
35
查看次数

使用花括号初始化类实例

我知道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表示指针),这是一个安全的操作吗?

c++ struct initialization class

1
推荐指数
1
解决办法
825
查看次数

重写toString()对象的字符串表示有什么原因和好处?

当我们需要一个对象的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()

java class object tostring

0
推荐指数
1
解决办法
1071
查看次数