在探索scjp问题时,我遇到了这种我觉得奇怪的行为.
我已经声明了两个类Item和Bolt,如下所示:
class Item {
int cost = 20;
public int getCost() {
return cost;
}
}
class Bolt extends Item {
int cost = 10;
public int getCost() {
return cost;
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试两次访问成本的价值
public class Test {
public static void main(String[] args) {
Item obj = new Bolt();
System.out.println(obj.cost);
System.out.println(obj.getCost());
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是20 10.我无法理解这是怎么发生的.
以下代码将检查字符串中是否有任何重复的字符,但我不理解if子句:
public static boolean isUniqueChars(String str) {
int checker = 0;
for (int i = 0; i < str.length(); ++i) {
int val = str.charAt(i) - 'a';
if ((checker & (1 << val)) > 0)
return false;
checker |= (1 << val);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我试图查找一些引用,我是新移位,所有我理解的是<<左移或右移二进制数.你能解释一下checker | =(1 << val)是如何工作的吗?以及'if'陈述.
我正在尝试编写go代码来解析json文件的以下内容:
{
"peers": [
{
"pid": 1,
"address": "127.0.0.1:17001"
},
{
"pid": 2,
"address": "127.0.0.1:17002"
}
]
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我能做的就是编写这段代码:
package main
import (
"fmt"
"io/ioutil"
"encoding/json"
)
type Config struct{
Pid int
Address string
}
func main(){
content, err := ioutil.ReadFile("config.json")
if err!=nil{
fmt.Print("Error:",err)
}
var conf Config
err=json.Unmarshal(content, &conf)
if err!=nil{
fmt.Print("Error:",err)
}
fmt.Println(conf)
}
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于非嵌套的json文件,如下所示:
{
"pid": 1,
"address": "127.0.0.1:17001"
}
Run Code Online (Sandbox Code Playgroud)
但即使改变了Config struct这么多次.我无法解析问题开头提到的json文件.有人可以告诉我怎么办?
我需要解析一个网页并从中提取一些值.所以我创建了一个python解析器,如下所示:
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_data(self, data):
print "Data :", data
f=open("result.html","r")
s=f.read()
parser = MyHTMLParser()
parser.feed(s)
Run Code Online (Sandbox Code Playgroud)
该程序读取html文件并从中打印数据.
我通过了以下result.html,这里解析器工作正常
<tr class='trmenu1'>
<td>Marks Obtained: </td><td colspan=1>75.67 Out of 100</td>
</tr>
<tr class='trmenu1'>
<td>GATE Score: </td><td colspan=1>911</td>
</tr>
<tr class='trmenu1'>
<td>All India Rank: </td><td colspan=1>34</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
传递上面的html之后输出是:
数据:
数据:获得的标记:
数据:75.67满分100的数据:数据:
数据:
数据:GATE得分:
数据:911
数据:数据:
数据:
数据:全印度排名:
数据:34
但解析器应该读取更大的文件,上面提到的代码只是该大文件的一小部分.该文件太大,无法在此处粘贴.所以我将其上传到以下链接:http://www.mediafire.com/?dsgr1gdjvs59c7c 当传递较大的文件时,解析器不读取所有条目,在输出中留下一些空白条目.部分输出如下所示:
数据:Syllabi
数据:
数据:GATE得分
数据:
数据:GATE结果
数据:
观察Gate Score下面的行中的空白条目,该值在之前的输出中为911.
解析器适用于小文件但不适用于大文件为什么会发生这种情况?我使用的是Python 2.7
可能重复这个或这个,但即使在试图挖掘答案一段时间后,我无法解决这个问题.
在尝试编译以下makefile时,
all: test
test: constants.h Point.h Point.cpp line_t.h line_t.cpp drawing_t.h drawing_t.cpp clipper_t.h clipper_t.cpp main.cpp
g++ -o test Point.cpp line_t.cpp drawing_t.cpp clipper_t.cpp main.cpp -lglut
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
g ++ -o test Point.cpp line_t.cpp drawing_t.cpp clipper_t.cpp main.cpp -lglut /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu /crt1.o:在函数
_start': (.text+0x18): undefined reference tomain'collect2:ld返回1退出状态make:***[test]错误1
我是Makefile的新手.我想,我错过了一些太明显的东西.
我有两个cpp类让我们说ClassA和ClassB.我有两个指针,相应地指向那些类,让我们说指针A和指针B. 现在我有一个通用的void*指针,我想根据某些条件指向ClassA或ClassB.在这种情况下获取错误错误C2227:' - > GetPosition'的左边必须指向类/ struct/union /泛型类型是'void*'.
如何避免这种错误?
ClassA {
void GetPosition();
}
ClassB {
void GetPosition();
}
main() {
ClassA *pointerA;
ClassB *pointerB;
void *generic_pointerAorB;
pointerA = GetAddrOfClassA();
pointerB = GetAddrOfClassB()
generic_pointer = pointerA;
//********************** error at the code below ******************************
//error C2227: left of '->GetPosition' must point to class/struct/union/generic type.
//type is 'void *'
generic_pointer->GetPosition();
//*****************************************************************************
}
Run Code Online (Sandbox Code Playgroud)