Освоюємо Java/ЧаП

Матеріал з Вікіпідручника

Часті питання

Тут знаходяться найбільш часті питання стосовно нюансів програмування на java, які не включені у Вікіпідручник Java або майже не розкриті.

Як передати масив в метод[ред.]

В оголошенні методу потрібно вказати, що метод приймає масив:

public static void max(String[][] ourArray){}

При виклику методу:

max(mas);

Як повернути масив з методу[ред.]

При оголошенні методу вказуємо тип масиву, що повертатеметься і в return власне наш масив:

public static String[] max(){
return new String mas{"Андрій","Володимир","Мирослав"};

Як організувати вибір файлів в системі[ред.]

Простий JFileChooser(http://www.java2s.com/Code/Java/Swing-JFC/JFileChooserisastandarddialogforselectingafilefromthefilesystem.htm)

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

public class FileChooserDialog {
  public static void main(String[] args) {
    JFileChooser fileopen = new JFileChooser();
    FileFilter filter = new FileNameExtensionFilter("c files", "c");
    fileopen.addChoosableFileFilter(filter);

    int ret = fileopen.showDialog(null, "Open file");

    if (ret == JFileChooser.APPROVE_OPTION) {
      File file = fileopen.getSelectedFile();
      System.out.println(file);
    }
  }
}

Достатньо вставити код наведений в main() в обробник подій кнопки з мінімальними модифікаціями під власні потреби.

Як організувати вибір папки в системі[ред.]

До попереднього прикладу перед показом вікна вибору, додаємо рядок:

fileopen.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

Рядки пов'язані з FileFilter можна забрати, фільтер не працюватиме, тож не потрібний.

Як сумістити два байти в одне слово[ред.]

Якщо у вас є два байти окремо у змінних типу byte і вони разом повинні складати одне двобайтове число чи символ, то з'єднати їх можна наступним чином:

public static short twoBytesToShort(byte b1, byte b2) {
          return (short) ((b1 << 8) | (b2 & 0xFF));
}

Далі перетворюємо short в int або char, в залежності від того, що зберігалося в цих двох байтах.

Це також можна зробити за допомогою потоку вводу даних DataInputStream. Далі представлений приклад з читанням байтів з файлу:

FileInputStream fin=new FileInputStream("D://result.txt");
DataInputStream din=new DataInputStream(fin);
short s=din.readShort();

Якщо байти об'єднані в неправильній послідовності, тобто перший байт має бути другим, а другий першим в двобайтовому слові, то можна скористатись методом reverseBytes() класу Short:

short k=Short.reverseBytes(s);