我试图理解类中getter/setter方法的用法.假设我们有一个名为A的类,其中包含一些公共实例变量,后跟一个带参数的构造函数,其中参数从另一个类(main)传递给它.在构造函数中,我们让那些实例变量等于传递的内容.
现在,如果这个类被另一个程序员使用,没有什么能阻止他们直接访问/更改实例变量到无效的东西.通过将实例变量设为私有,我们可以消除对这些变量的访问.但是,如果我们想要间接地或在某些特定条件下更新/更改这些实例变量,或者只是让该人可以访问实例变量,我们将为此创建一个getter/setter对.
好处?:1.
仅在set()方法下的某些有效原因下
更改实例变量2.因此我们可以显示实例变量实际上是什么而不给使用此类的程序员更改它的能力.
这是正确的解释吗?
我知道这两个补码用于表示负数,但也有使用符号幅度的方法.标志幅度是否仍用于表示负数?如果不是之前使用的地方呢?一台机器如何使用两个补码来解释负数,能够通信并理解另一台使用符号幅度的机器?
我正在尝试使用PersonScore在这3个表上进行内部联接,但找不到人类型。我究竟做错了什么?
楷模:
class PersonScore(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
person = models.ForeignKey(‘Person’)
class Person(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
name = models.CharField(max_length=255)
class PersonType(models.Model):
person = models.ForeignKey(‘Person’)
type = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
码:
PersonScore.objects.filter(person__name="Bob").prefetch_related("person__persontype")
Run Code Online (Sandbox Code Playgroud)
错误:
Cannot find 'persontype' on Person object, 'person__persontype' is an invalid parameter to prefetch_related()
Run Code Online (Sandbox Code Playgroud)
码:
PersonScore.objects.filter(person__name="Bob").prefetch_related("person__persontype_set")
Run Code Online (Sandbox Code Playgroud)
错误:
KeyError: (1L,)
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的数组的每个元素输出到.txt文件中,但由于某种原因它甚至不创建该文件.我在显示方法中有一个cmd输出和文件输出,从main调用.cmd输出完美地工作但是当我使用ofstream尝试创建文件并将数组的元素输出到它时,我看不到任何创建的文本文件.
ofstream ofs("TEST.txt");
if(!ofs)
cout << "cannot use" << endl;
else
{
for(int a=0; a < 12; a++)
{
for(int b=0; b < 12; b++)
{
cout << RandomArray[a][b] << "\t";
ofs << RandomArray[a][b];
}
cout << "\n";
}
}
ofs.close();
Run Code Online (Sandbox Code Playgroud) 出于我的问题的目的,我只包括案例1,但其他案例是相同的.假设value当前为1,我们转到case 1,我们的for循环遍历数组,看看每个元素是否与whatever_value变量匹配.在这种情况下,如果确实如此,我们将value变量声明为等于2,并且我们将跳出循环.问题是,当我突出显示另一个中断(在eclipse中)时,它表示中断也附加到for语句,但我只希望将for语句附加到if语句,而不是else if语句好.我想因为for语句没有括号,它只会为if语句循环,但eclipse会另外说(否则如果从0循环到数组长度).
switch (value) {
case 1:
for (int i = 0; i < something_in_the_array.length; i++)
if (whatever_value == (something_in_the_array[i])) {
value = 2;
break;
} else if (whatever_value == 2) {
value = 3;
break;
} else if (whatever_value == 3) {
value = 4;
break;
}
break;
case 2:
// code continues....
Run Code Online (Sandbox Code Playgroud) node_marked_array.add(strings[0]);
for (int i = 0; i < strings.length; i++) {
for (int a = 0; a < strings2.length; a = a + 2) {
if (node_marked_array.get(i).equals(strings2[a])) {
if (!node_marked_array.get(i).equals(strings2[a + 1])) {
// System.out.println("marked node: " + node_marked_array.get(i) + "=" + strings2[a] + ", added node " + strings2[a+1]);
node_marked_array.add(strings2[a + 1]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为strings2元素的数组,每个元素都是:
1, 2, 1, 3, 2, 3, 2, 4, 3, 2, 5, 5, 2,
我的代码应该去通过阵列,如果它例如任何被称为数组中的元素相匹配strings:{1,2,3,4,5}与的strings2每个元素,甚至.它检查 …
static void nodes(String node) {
int node_location;
int i;
int update_i=1;
node_location=((node.indexOf("(("))-2);
ArrayList<String> node_array = new ArrayList<String>();
for( i=1;i<node_location;i++) {
if(node.charAt(i)!=',') {
if(node.charAt(i+1)==',' || node.charAt(i+1)==')')
node_array.add(Character.toString(node.charAt(i)));
else {
for(int a=i+2;a<=node.indexOf("),");a++) {
update_i++;
if(node.charAt(a)==',') {
node_array.add(node.substring(i, a));
break;
}
}
i=update_i;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该方法应该采用格式的字符串(1,2,3,4,5)并将数字(作为字符串)存储在arraylist中.问题是当我有(1,2,333,4,5)例如我的if语句应该转到else并检查数字在我们到达逗号之前有多少个位置.然后我把它的子串并存储到我的arraylist中.问题是,由于某些原因,当我们到达else语句时,我的位置不会更新(我们必须增加比for循环更多的东西,因为数字不止一个.但是当我运行它时,我的程序打印出以下内容:
1
2
333
333
33
3
4
5
java ×4
arrays ×1
binary ×1
c ×1
c++ ×1
decimal ×1
django ×1
django-orm ×1
duplicates ×1
iostream ×1
networking ×1
oop ×1