试图使用二进制搜索计算出数字的平方根,但是我的实现不起作用,我不知道为什么 - 任何帮助表示赞赏,谢谢
继承我的代码.'end'是我希望平方根的数字的值
while(start <= end) {
float mid = ((start + end) / 2);
printf("\nhalving mid");
if(mid * mid == end){
sqrt = mid;
printf("\nsqrt = %d", sqrt);
}
if(mid * mid < end){
start = mid + 1;
sqrt = mid;
printf("\nsqrt: %d", sqrt);
}
else{
start = mid - 1;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从文件中读取这个json数据
[{"name":"Luke","score":50},{"name":"Ryan","score":70}]
Run Code Online (Sandbox Code Playgroud)
码:
JsonParser parser = new JsonParser();
try{
Object obj = parser.parse(new FileReader("C:/Users/user/Documents/HighscoresJSON.json"));
JSONObject jsonObject = (JSONObject) obj;
String usersName = (String) jsonObject.get("name");
System.out.println("Name of user: " + usersName);
int usersScore = (int) jsonObject.get("score");
System.out.println("Score: " + usersScore);
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
com.google.gson.JsonArray cannot be cast to org.json.JSONObject
我是C的新手,并不理解这种类型的for循环语法.
for(int i(9), j(0); i > j; i--, j++)
cout << i;
Run Code Online (Sandbox Code Playgroud)
这给出了98765的结果,但为什么呢?
我习惯了这样的循环:
for(int i = 9, int j = 0; i>j; i--, j++){
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
我看到我被初始化为9,j被初始化为0,但它是如何得到一个那么大的数字?