使用嵌套的两个while循环

时间:2011-01-30 13:26:32

标签: java

我遇到问题,当我编译程序时没有错误,但是当我运行程序时没有执行任何操作。已经安装了JDK。其他程序运行良好。我的问题是什么?因为嵌套循环??

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());
 }
}
}

2 个答案:

答案 0 :(得分:0)

如果您的程序甚至没有打印“data telah dimasukan”,那么还有另一个错误。 Maxybe你忘了再次编译?

答案 1 :(得分:0)

  1. 程序不能执行任何操作只是“因为嵌套循环”。看起来您的代码逻辑或输入数据存在问题。目前很难跟踪问题,但是你可以帮助指定这个程序应该做什么,输入文件可以包含什么,你期望输出什么。

  2. 您可以使用IDE的调试器来检查程序中实际发生的情况。此外,您可以添加一些调试输出以获取字符串的中间值。

  3. 功能很长,至少有一个代码重复。如果你稍微重构一下(extract methods,将fis1,fos2和temp1中的变量重命名为一些有意义的名称),就会容易找到问题。