2015-12-23 55 views
0

所以,如果找到这篇文章的链接:http://www.theguardian.com/science/alexs-adventures-in-numberland/2015/may/21/how-to-solve-the-maths-puzzle-for-vietnamese-eight-year-olds-that-stumped-parents-and-teachers整数结果不同于计算

所以我决定用java代码来解决它。

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class Quiz { 

    public static void main (String [] args){ 
     Double result = 0.0; 
     boolean test = false; 

     List<Integer> dataList = new ArrayList<Integer>(); 
     for (int i = 1; i < 10; i++) { 
      dataList.add(i); 
     } 

     int[] num = new int[dataList.size()]; 

     while (test == false) { 
      Collections.shuffle(dataList); 
      for (int i = 0; i < dataList.size(); i++) { 
       num[i] = dataList.get(i); 
      } 

      if ((num[0] + 13 * num[1]/num[2] + num[3] + 12 * num[4] - num[5] - 11 + num[6] * num[7]/num[8] - 10) == (3 + 13 * 2/1 + 5 + 12 * 4 - 7 - 11 + 9 * 8/6 - 10)){ 
       test = true; 
      } 
     } 

     for (int i = 0; i < num.length; i++) { 
      System.out.println(num[i]); 
     } 
     System.out.println(test); 
    } 
} 

代码检查两个方程并对它们进行比较,并给了我真实的,但是当我用计算器计算它们,结果是不同的。

什么可能是错的?

+0

这取决于你的计算器应用运营商的订单上。有些计算器按照外观顺序应用运算符(即2 + 3 * 5将导致5 * 5 = 25而不是2 + 15 = 17) – Eran

+0

您必须阅读有关运算符优先级http://introcs.cs.princeton的内容。 edu/java/11precedence/ –

+0

运算符优先级为 – Ramanlfc

回答

3

这是因为结果类型取决于它的操作数的类型。在你的情况,因为所有的操作数的类型的INT因此最终的结果也将是一个INT

+0

所以我应该将它们改为双倍以使其正常工作? – MohammadAbusaleh

+0

是的,你可以试试看。它会。 – Yogesh

相关问题