2011-01-30 406 views
0

我得到的問題,當我編譯我的程序沒有錯誤,但是當我運行該程序不會執行任何操作。 JDK已安裝。其他程序運行良好。我的問題是什麼?因爲嵌套循環?做while循環嵌套兩個while

import java.io.*; 
import java.io.PrintStream.*; 
public class Latihan3 { 
    public static void main (String args []){ 
    int data1=0; 
    int data2=0; 

    char temp1; 
    char temp2; 
    boolean done=false; 
    String simpan1; 
    String simpan2; 
    String konversi; 
    String jenis=""; 
    String kata1=""; 
    String kata2=""; 
    FileInputStream fis1 =null; 
    FileInputStream fis2 =null; 
    FileOutputStream fos =null; 
    FileOutputStream fos2 =null; 
    DataOutputStream dos =null; 
    DataOutputStream dos2 =null; 
    PrintStream ps = null; 
    PrintStream ps2 = null; 

    try { 
    fis1 = new FileInputStream ("D://hasil2.txt"); 
    fis2 = new FileInputStream ("D://latihan.txt"); 
    fos = new FileOutputStream ("D://latihan2.txt"); 
    fos2 = new FileOutputStream ("D://katabaru.txt"); 
    dos = new DataOutputStream (fos); 
    dos2 = new DataOutputStream (fos2); 
    ps = new PrintStream (dos); 
    ps2 = new PrintStream (dos2); 
    } catch (IOException e){ 
    System.out.println ("Eksepsi :"+e.getMessage()); 
    } 
    try{ 


    do { 


    data1=fis1.read(); 
    temp1=(char)data1; 
    data2=fis2.read(); 
    temp2=(char)data2; 



    while (temp1 != ' '){ 
     simpan1 = String.valueOf(temp1); 
     kata1 = kata1.concat (simpan1); 
     data1=fis1.read(); 
     temp1=(char)data1; 
    } 

    data1=fis1.read(); 
    temp1=(char)data1; 
    jenis = String.valueOf(temp1); 
    data1=fis1.read(); 
    temp1=(char)data1; 


    while (temp2 != ' '){ 
     simpan2 = String.valueOf(temp2); 
     kata2 = kata2.concat (simpan2); 
     data2=fis2.read(); 
     temp2=(char)data2; 

    } 

    if (kata1.equals (kata2)){ 
     ps.print (kata1); 
     ps.print (' '); 
     ps.print (jenis); 
     ps.print ('/'); 
     kata1=""; 
     kata2=""; 
    }else { 
     ps.print (kata2); 
     ps2.print (kata2); 
     ps2.print (' '); 
     ps2.print (jenis); 
     ps2.print ('/'); 
     ps.print (' '); 
     ps.print ('?'); 
     ps.print ('/'); 
     kata1=""; 
     kata2=""; 
    } 


    } while (data2 != -1); 

System.out.println ("data telah dimasukan"); 
} catch (IOException e){ 
    System.out.println ("Eksepsi :"+e.getMessage()); 
} 
} 
} 
+1

詳細瞭解功能組織代碼。 – 2011-01-30 13:30:02

回答

0

如果你的程序甚至不打印「data telah dimasukan」,那麼還有另一個錯誤。 Maxybe你忘了再次編譯?

0
  1. 程序不能執行任何操作,因爲「因爲嵌套循環」。看起來你的代碼邏輯或輸入數據有問題。目前很難追查這個問題,但是你可以幫助指定這個程序應該做什麼,輸入文件可以包含什麼,你期望輸出什麼。

  2. 您可以使用IDE的調試器來檢查程序中實際發生了什麼。另外,您可以添加一些調試輸出以獲取字符串的中間值。

  3. 至少有一個代碼重複有很長的功能。這將是很容易找到的問題,如果你重構它一點(extract methods,重新命名FIS1,fos2和temp1中的變量一些有意義的名字)