Освоюємо 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);