2013-10-27 186 views
2

我想動態分配變量,但我不知道如何做到這一點。動態變量

什麼我的計劃應該做的:

「寫一個程序,讓用戶輸入三個方面的長度,並確定數字是否是三角形或沒有。」

這是我到目前爲止有:

package triangle; 
import javax.swing.JOptionPane; 
public class Triangle { 
    public static void main(String[] args) { 
     String x = JOptionPane.showInputDialog("Please enter the side lengths of a  triangle with each side \nseparated with a ',' and without spaces. (eg. 1,2,3)"); 
     x += ","; 
     int y = -1, a = 0; 
     double z; 
     for(int i = 0; i < x.length(); i++) 
     { 
      if(x.charAt(i) == ',') 
      { 
       z = Double.parseDouble(x.substring((y + 1), i)); 
       y = i; 
       a += z; 
      } 
     } 
    } 
} 

我很想做的是有這個if語句:

int a++; 
z(a) = Double.parseDouble(x.substring((y + 1), i)); 

但正如我已經找到了這不會工作,我需要某種數組。可悲的是,我的在線課程還沒有開始數組,我還沒有在自己的學習中掌握它們。

我想做3個變量(z1,z2,z3)併爲if語句中的每個變量賦一個整數。

編輯: 下面是一些修改後的代碼,現在我現在想要的工作。希望這有助於未來的其他人!

package triangle; 
import javax.swing.JOptionPane; 
public class Triangle { 
    public static void main(String[] args) { 
     String x = JOptionPane.showInputDialog("Please enter the side lengths of a  triangle with each side \nseparated with a ',' and without spaces. (eg. 1,2,3)"); 
     x += ","; 
     int y = -1, a = 0; 
     Double[] z = new Double[3]; 
     for(int i = 0; i < x.length(); i++) 
     { 
      if(x.charAt(i) == ',') 
      { 
       z[a] = Double.parseDouble(x.substring((y + 1), i)); 
       y = i; 
       a++; 
      } 
     } 
     //Some test code to see if it was working 
     System.out.println(z[0]); 
     System.out.println(z[1]); 
     System.out.println(z[2]); 
    } 
} 
+2

好的,但是......你應該怎麼做?你想要這個代碼做什麼? –

+0

這是一個學校的作業。我只是想超出所問的範圍。 「編寫一個程序讓用戶輸入三個邊的長度並確定該圖是否爲三角形。」 – lukeb28

回答

1

你不需要使用數組,特別是你沒有被引入它們。你可以簡單地用一個Scanner類,並做類似的事情,以

Scanner in = new Scanner(System.in); // this will read from the standard system input 
System.out.println("Please enter three lengths of sides: "); 
int a = in.nextInt(); 
int b = in.nextInt(); 
int c = in.nextInt(); 

編寫一些邏輯(我想這是你的作業點)檢查,如果這個數字是一個三角形。

如果你想使用數組,你可以做聲明一個:

int[] sidesLenghtsArray = new int[3]; 

然後,而不是指的三個不同int變量,你可以簡單地參考您的數組元素:

int[0] = in.nextInt(); 
int[1] = in.nextInt(); 
int[2] = in.nextInt(); 

只要記住 - 括號內的數字是數組元素的數量,但是指向那些元素,則從0開始計數。這就是爲什麼我們以int[0](第一個元素)開頭並以結尾(第三元素)。

+0

我會使用一個掃描儀和三個不同的輸入,但我想使用一個循環只是爲了一些額外的挑戰,並顯示我的老師,我已經準備好更高級的類(如陣列)。一旦我嘗試實施陣列,我會盡快回復您。感謝您的快速響應! – lukeb28

+0

@ lukeb28如果我可以給你一個建議 - 如果你想讓你的老師知道你已經準備好了更高級的課程,首先閱讀一些書或教程(我確定你有一些材料可以學習從)陣列(或任何你想學習),而不是*之前*你實際上尋找一些信息。希望這會有所幫助。如果您還有其他問題,請不要猶豫,問問! –

+0

我一直在看java vswe的夏季資源。 http://www.youtube.com/watch?v=RtA9xz6W5to&list=PL6lD77ZPqAf3KtS0T8LZ-JTdjogDKas8N 我需要問的主要原因是因爲他跳過了一維數組,並且直接去了二維數組,這讓我很困惑。我剛剛完成將數組實現到我的代碼中,並且它完全按照我的意願進行!感謝Eel Lee的幫助!我認爲我已經更好地理解了數組,現在我已將它們應用於我的代碼中。 – lukeb28

0

Java不支持的元組分配如

def (a,b,c) = "1,2,3".split(",") 

有可能用下面的代碼來做到這一點在Java中8:

int[] abc = Arrays.stream("1,2,3".split(",")).mapToInt(Integer::parseInt).toArray(); 

這裏,aabc[0]babc[1]。在Java 7中

類似的代碼可能是這樣的:

String[] abc = "1,2,3".split(","); 

int a = Integer.parseInt(a[0]); 
int b = Integer.parseInt(a[1]); 
int c = Integer.parseInt(a[2]); 
+0

你確定這是這個問題的答案嗎? –

+0

是的,我很確定。 @ likeb28很好奇,我給了選擇。這可能是新的API,但它很容易理解。爲什麼? –

+0

感謝您的信息,但我目前正在運行java 7.我會保持一個筆記,當我做更新,但! – lukeb28

0

非常基本的想法是,當你添加雙方的長度每一個三角形,所產生的長度應比其餘的長度時,兩側。假設a,b,c是三角形的邊。

public static void main(String[] args){ 
    int a=3, b=4, c=5; 

    if(a+b > c && a+c>b && c+b>a){ 
     System.out.println("This is a valid trianlge"); 
    } 
    else{ 
     System.out.println("This is not a valid triangle"); 
    } 
} 

確保使用從用戶輸入中獲得的值替換a,b和c的值。

+0

感謝您提供幫助,但這是我的任務,而不是我的問題。如果有人爲你做這項工作,那麼分配的重點是什麼?無論如何,我想出的內容與你所提供的內容差不多。唯一的區別是我使用了一個數組並且做了它不是三角形的條件。 – lukeb28

+0

不客氣,我沒有提供完整的解決方案,因爲您必須添加代碼才能按照問題的方式工作。我很高興你讓它工作。 – MZ4Code