2015-11-04 55 views
-1

我寫了下面的代碼在JAVA:意外的類型,而編譯

import java.util.Scanner; 

public class Equations 
    { 
     public static void main (String [] args) 
     { 
      Scanner scan = new Scanner (System.in); 
      System.out.println ("This program solves a system of 2 linear equations" +"\n"+ 
     "Enter the coefficients a11 a12 a21 a22 b1 b2:"); 

      int a11 = scan.nextInt(); 
      int a12 = scan.nextInt(); 
      int a21 = scan.nextInt(); 
      int a22 = scan.nextInt(); 
      int b1 = scan.nextInt(); 
      int b2 = scan.nextInt(); 

      System.out.println ("Eq: " + a11 + "*x1" + "+" + a12 + "*x2 = " + b1); 
      System.out.println ("Eq: " + a21 + "*x1" + "+" + a22 + "*x2 = " + b2); 

      if(((a11*a22)-(a12*a21)) != 0){ 
       double Equ1single = ((b1*a22)-(b2*a12))/((a11*a22)-(a12*a21)); 
       double Equ2single = ((b2*a11)-(b1*a21))/((a11*a22)-(a12*a21)); 
       System.out.println ("Single solution: (" + Equ1single + "," + Equ2single + ")"); 
      } 

      if(((b2*a11)-(b1*a21)) = 0){ 
       System.out.println ("Many solutions"); 
      } 

     } 
} 

在編譯時在BlueJay環境中,該代碼我得到一個錯誤。 錯誤如下:

意外類型。需要的變量;找到的值。

它將「 - (b1 * a21)」標記爲問題。但是我確實聲明a21是一個int。而且,之前的「if」條件是「相同的」,並且不會給出任何錯誤。

編譯這個問題有什麼問題?

+3

嘗試用2'='例如if(((b2 * a11) - (b1 * a21))== 0){' –

+1

'='是賦值和'=='用於比較。 – YoungHobbit

+1

你應該使用==而不是=。 ==是相等的測試,=將右邊的sie表達式的結果賦給左邊的變量。 –

回答

-1
if(((b2*a11)-(b1*a21)) = 0){ 

應改爲

if(((b2*a11)-(b1*a21)) == 0){ 
+1

請在評論中回答這個問題,並投票結束爲排字錯誤。 –

+0

@SotiriosDelimanolis,我不知道我明白了爲什麼?這是一個有效的問題,並帶有有效的答案。它可能是重複的,但這不是一個無效的問題,我認爲? –

+1

這是一個由錯字造成的問題。對我來說顯然他們打算使用'=='。我不希望我們鼓勵這些問題,也不會回答他們。 IMO。 (我現在沒有投票權,否則我會投票結束這個問題。) –