python different_Java中针对Python的相同功能不同(Different out for same function in Java against Python)...

Java中针对Python的相同功能不同(Different out for same function in Java against Python)

我有一个评估公式

((x+y-1)*(x+y-2))/2 + x

并获得它的字符串表示。 所以在Java 1.7中我写了

public static void main(String[] args)

{

int x = 99999;

int y = 99999;

int answer = ((x+y-1)*(x+y-2))/2 + x;

String s = Integer.toString(answer);

System.out.println(s);

}

并在Python 2.7中

def answer(x, y):

z = ((x+y-1)*(x+y-2))/2 + x

return str(z);

print(answer(99999,99999))

Java给了我672047173的输出,而Python给了我19999400005 ,似乎来自Python的价值是正确的。 造成这种差异的原因是什么?

I have a formula to evaluate

((x+y-1)*(x+y-2))/2 + x

and get the string representation of it. So in Java 1.7 I write

public static void main(String[] args)

{

int x = 99999;

int y = 99999;

int answer = ((x+y-1)*(x+y-2))/2 + x;

String s = Integer.toString(answer);

System.out.println(s);

}

and in Python 2.7

def answer(x, y):

z = ((x+y-1)*(x+y-2))/2 + x

return str(z);

print(answer(99999,99999))

Java gave me the out put of 672047173 while Python gave me 19999400005 and seems the value from Python is correct. What is the reason behind this difference.

原文:https://stackoverflow.com/questions/44351263

更新时间:2019-12-30 16:23

最满意答案

19999400005对于int变量19999400005是一个太大的值,所以Java计算会溢出。

改用long变量:

public static void main(String[] args)

{

long x = 99999;

long y = 99999;

long answer = ((x+y-1)*(x+y-2))/2 + x;

String s = Long.toString(answer);

System.out.println(s);

}

输出是:

19999400005

还请注意,您可以直接打印answer ,不必将其明确地转换为String :

System.out.println(answer);

19999400005 is a too large value for int variables, so the Java calculations would overflow.

Use long variables instead:

public static void main(String[] args)

{

long x = 99999;

long y = 99999;

long answer = ((x+y-1)*(x+y-2))/2 + x;

String s = Long.toString(answer);

System.out.println(s);

}

Output is:

19999400005

Also note that you can print answer directly and don't have to convert it to String explicitly:

System.out.println(answer);

2017-06-04

相关问答

因为人工智能,现阶段Python比较火,而且Python编程比较简短,但是Java是很稳定的编程语言,也会比较难,适用更广,手打望采纳。

- -!两种语言都比较的NB Python是一种动态语言,最大的特点是执行时编译。最大的长处是库非常的多而且全,和C/C++结合方便。Python是一种弱类型语言,写程序非常的方便,比如说100000000000000*100000000绝对不会给你算溢出了(当然速度不会快哪里去哈)。呵呵,我学习的时候就拿兔子数列做的实验,印象很深刻。Python语言里有很多很奇异的思想,用起来非常的方便,比如说切片。 JAVA则是换一种思想,首先将代码编译为一种中间层,然后在运行时再次编译。最大的长处是跨平台,

...

您可以使用方法重载来模拟默认参数: int find_root(int base, int nth_root) {

return find_root(base, nth_root, -1, 0);

}

int find_root(int base, nth_root, int top, int bottom) {

// ...

}

You can use method overloading to simulate default parameters: int find_root

...

对于实现List接口的集合,可以调用listIterator()方法来获取ListIterator 。 迭代器具有(以及其他)两个方法 - nextIndex() ,用于获取索引; 和next() ,以获取值(像其他迭代器)。 所以与上述Python相当的Java可能是: List numbers = Arrays.asList("zero", "one", "two");

ListIterator it = numbers.listIterator();

whil

...

您可以使用Jython轻松地从Java代码调用python函数。 只要你的python代码本身就在jython下运行,即不使用一些不支持的C扩展。 如果这对您有用,那肯定是您可以获得的最简单的解决方案。 否则,您可以从新的Java6解释器支持中使用org.python.util.PythonInterpreter 。 一个简单的例子,从我的头顶 - 但应该工作,我希望:(没有错误检查为简洁) PythonInterpreter interpreter = new PythonInterpreter

...

JYthon是java中的python实现,你应该检查出来 www.jython.org JYthon is a python implementation in java , you should check it out www.jython.org

19999400005对于int变量19999400005是一个太大的值,所以Java计算会溢出。 改用long变量: public static void main(String[] args)

{

long x = 99999;

long y = 99999;

long answer = ((x+y-1)*(x+y-2))/2 + x;

String s = Long.toString(answer);

System.out.println(s);

}

...

例如,尝试使用python的完整路径 Process process = Runtime.getRuntime().exec("C:\\Python\\python.exe

C:\\Users\\username\\Desktop\\demo\\filename.py");

Try to use full path to python, for example Process process = Runtime.getRuntime().exec("C:\\Python\

...

当您调用另一个进程时 ,不会返回值。 您唯一可以期待的是数字返回码值。 你真正想要的是这个: 在该进程中运行的程序写入stdout ...或某个文件 然后,触发该进程的python代码可以读取该内容 请参阅此处 ,了解有关python脚本如何读取子进程正在编写其标准输出的说明。 并且为了记录:没有弯路。 如果你打算用你的java代码做任何“严肃”的事情,那么你必须学习足够的Java来实现这一点。 不理解一个说空的方法不能返回一些语句就是一个很好的例子。 对于python方面也是如此。 是的, os

...

Java函数每次迭代只能执行一个return语句。 不管你在函数中写入多少个返回语句,首先在函数的遍历路径中找到的语句都将被执行。 Java function can only execute one return statement per iteration. Doesn't matter how many return statements you write in a function, first one found in traversed path of function will

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值