Category Archives: Java

「java入門」Javaでハーフクリリのサンプルコード

サンプルコード:

public class HalfSerach_Startnews24
{
public static void main(String[] args)
{
int [] arr = {3,6,7,9,11,22,35};
int index = halfsearch(arr,11);   //halfsearchメソッドを呼び出す
System.out.println(“インデックス: ” + index); //クエリ結果を出力
}

public static int halfsearch(int [] arr,int key) //halfsearchメソッドを定義
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid=(min+max)/2;

while (arr[mid]!=key)
{
if (key>arr[mid])
min=mid+1;
else if (key<arr[mid])   max=mid-1;

if (min>max)
return -1;
mid=(min+max)/2;
}
return mid;
}

「Java入門」マルチスレッド で同期コードブロックのサンプルコード

サンプルコード:
public class ThreadStartnews24 {
public static void main(String[] args)
{
ThreadTest t = new ThreadTest();
Thread t1 = new Thread(t);t1.start();
Thread t2 = new Thread(t);t2.start();
Thread t3 = new Thread(t);t3.start();
}
}

class ThreadTest implements Runnable {
private int tickets = 100;
String str = new String(“”);

public void run() {
while (true) {
synchronized (str) {
if (tickets > 0) {
try {
Thread.sleep(10);
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println(Thread.currentThread().getName() + “のチェットが売れている” + tickets–);
}
}
}
}
}

JavaでFTPアップロードとダウンロード

1,必要なパッケージ
commons-net-3.3.jar、log4j-1.2.16.jar

2.FtpUtil.java
package com.startnews24.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;

import com.startnews24.init.InitProperties;

public class FtpUtil {
// ログ
public static Logger logger = Logger.getLogger(FtpUtil.class);

/**
* Description: FTPサーバーにファイルをアップロード
*
* @param url
* FTPサーバーhostname
* @param port
* FTPサーバポート
* @param username
* FTPログインアカウント
* @param password
* FTPログインパスワード
* @param path
* FTPサーバー保存ディレクトリ
* @param filename
* FTPサーバーにアップロードファイル
* @param input
* 入力ストリーム
* @return 成功true,失敗false
*/
public static boolean uploadFile(String url, int port, String username,
String password, String path, String filename, InputStream input) {
boolean returnValue = false;
FTPClient ftp = new FTPClient();
try {
int reply;

ftp.connect(url, port);//FTPサーバーに接続
ftp.login(username, password);// ログイン
ftp.enterLocalPassiveMode();
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.setControlEncoding(“utf8”);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
logger.info(“FTP SERVER REFUSED CONNECTION.”);
return returnValue;
}
String home_path = ftp.printWorkingDirectory();
ftp.changeWorkingDirectory(home_path + path);

ftp.storeFile(filename, input);

input.close();

ftp.logout();
returnValue = true;
} catch (IOException e) {
logger.info(“FTPUPLOADUTIL UPLOD FILE ERROR :” + e);
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return returnValue;
}

/**
* Description:FTPサーバーにファイルをアップロード
*
* @param filename
* FTPサーバーにアップロードファイル名
* @param input
* 入力ストリーム
* @return 成功true,失敗false
*/
public static boolean uploadFile(String filename, InputStream input) {
boolean returnValue = false;
returnValue = uploadFile(InitProperties.ftpIp, InitProperties.ftpPort,
InitProperties.ftpUser, InitProperties.ftpPwd,
InitProperties.upload_ftp_path, filename, input);
return returnValue;
}

/**
* Description:FTPサーバーからファイルをダウンロード
*
* @param url
* FTPサーバーのhostname
* @param port
* FTPサーバーのポート
* @param username
* FTPログインアカウント
* @param password
* FTPログインパスワード
* @param path
* FTPサーバー保存ディレクトリ
* @param filename
* FTPサーバーにアップロードファイル名
* @param localPath
* 出力パス
* @return 成功true,失敗false
*/
public static boolean downloadFile(String url, int port, String username,
String password, String path, String filename, String localPath) {
boolean returnValue = false;
FTPClient ftp = new FTPClient();
try {
int reply;

ftp.connect(url, port);// FTPサーバーに接続
ftp.login(username, password);// ログイン
ftp.enterLocalPassiveMode();
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.setControlEncoding(“gbk”);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
logger.info(“FTP SERVER REFUSED CONNECTION.”);
return returnValue;
}
String home_path = ftp.printWorkingDirectory();
ftp.changeWorkingDirectory(home_path + path);

FTPFile[] fs = ftp.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filename)) {
File localFile = new File(localPath);
OutputStream os = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), os);
returnValue = true;
}
}

ftp.logout();
} catch (IOException e) {
logger.info(“FTPDOWNLOADUTIL DOWNLOAD FILE ERROR :” + e);
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return returnValue;
}

/**
*ファイルをダウンロード
*/
public static boolean downloadFile(String filename, String localPath) {
boolean returnValue = false;
downloadFile(InitProperties.ftpIp, InitProperties.ftpPort,
InitProperties.ftpUser, InitProperties.ftpPwd,
InitProperties.upload_ftp_path, filename, localPath);
return returnValue;
}

}

3.InitProperties.java

package com.startnews24.init;

public class InitProperties {
public static String uploadLocalPath;
public static String upload_ftp_path;
public static String ftpIp;
public static int ftpPort;
public static String ftpUser;
public static String ftpPwd;
}

「Java入門」スレッドに対してRead(読み取る)-Write(書き込む) Lockの処理サンプルコード

処理コード:

import java.util.Random;
public class WriteReadLockStartnews24 {
public static void main(String[] args) {
// TODO Auto-generated method stub
final Queue1 q3 = new Queue1();
for(int i =0 ;i<3;i++)
{ new Thread()
{
public void run(){
while(true)
{
q3.put(new Random().nextInt(1000));
}
}}.start();
new Thread()
{
public void run(){
while(true)
{
q3.get();
}
}}.start();

}}

}
class Queue_Startnews24{
private Object data =null;
public void put(Object data){
System.out.println(Thread.currentThread().getName()+”is ready to put data”);
try {
Thread.sleep((long)(Math.random()*1000));
this.data = data;
System.out.println(Thread.currentThread().getName()+”has put the data :”+data);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void get(){
System.out.println(Thread.currentThread().getName()+”がデータを読む取る!”);
try {
Thread.sleep((long)(Math.random()*1000));
System.out.println(Thread.currentThread().getName()+”has read the data: “+data);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

JavaFXでTableViewのMenuButtonを書き換えるサンプルコード

サンプルコード:
public class TableViewTest extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage paramStage) throws Exception {
final ObservableList data = FXCollections.observableArrayList(
new Person(1, “山田”, 23), new Person(2, “豊田”, 24), new Person(3,
“山崎”, 56));
final TableView tableView = new TableView();
tableView.setTableMenuButtonVisible(true);
TableColumn<Person, Integer> idColumn = new TableColumn<Person, Integer>(
“id”);
idColumn.setCellValueFactory(new PropertyValueFactory<Person, Integer>(
“num”));

CheckMenuItem showHideidCol = new CheckMenuItem(“id”);
showHideidCol.selectedProperty().bindBidirectional(
idColumn.visibleProperty());
TableColumn<Person, String> nameColumn = new TableColumn<Person, String>(
“名前”);

nameColumn
.setCellValueFactory(new PropertyValueFactory<Person, String>(
“name”));
CheckMenuItem showHideNameCol = new CheckMenuItem(“name”);
showHideNameCol.selectedProperty().bindBidirectional(
nameColumn.visibleProperty());

TableColumn<Person, Integer> ageColumn = new TableColumn<Person, Integer>(
“年齢”);
ageColumn
.setCellValueFactory(new PropertyValueFactory<Person, Integer>(
“age”));

CheckMenuItem showHideAgeCol = new CheckMenuItem(“age”);
showHideAgeCol.selectedProperty().bindBidirectional(
ageColumn.visibleProperty());

tableView.getColumns().addAll(idColumn, nameColumn, ageColumn);
tableView.setItems(data);
BorderPane root = new BorderPane();
ScrollPane scroller = new ScrollPane();
scroller.setContent(tableView);
root.setCenter(scroller);
Scene scene = new Scene(root, 500, 250);

paramStage.setScene(scene);
paramStage.centerOnScreen();
paramStage.show();

final ContextMenu menu = new ContextMenu();
menu.getItems().addAll(showHideNameCol, showHideAgeCol);
final Node showHideColumnsButton = tableView
.lookup(“.show-hide-columns-button”);
EventHandler mousePressedHandler = new EventHandler() {
@Override
public void handle(MouseEvent event) {
if (menu.isShowing()) {
menu.hide();
} else {
menu.show(showHideColumnsButton, Side.BOTTOM, 0, 0);
}
event.consume();
}
};
showHideColumnsButton.addEventFilter(MouseEvent.MOUSE_PRESSED,
mousePressedHandler);
}

public static class Person {

private final SimpleIntegerProperty num;
private final SimpleStringProperty name;
private final SimpleIntegerProperty age;

private Person(int id, String name, int age) {
this.name = new SimpleStringProperty(name);
this.age = new SimpleIntegerProperty(age);
this.num = new SimpleIntegerProperty(id);
}

public Integer getNum() {
return num.getValue();
}

public String getName() {
return name.get();
}

public Integer getAge() {
return age.getValue();
}

}
}

mavenを使用してjava projectを作成

1.pom.xml
UTF-8

2.git clone https://github.com/spring-guides/gs-maven.git
cd into gs-maven/initial

install Maven

spring mvc @RequestBodyでpost jsonオブジェクトを受け入れるサンプルコード

1.クライアント側:
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Insert title here</title>
<script type=”text/javascript”
src=”<%=basePath%>resources/scripts/jquery-2.0.3.min.js”></script>
<script type=”text/javascript”>
$(function(){
$(“#send”).click(function(){
var jsondata = $(“#jsondata”).val();
var jsonobj = JSON.parse(jsondata)

var callback = function (data) {
$(“#result”).html(JSON.stringify(data))
}

$.postJSON(‘<%=basePath%>api/user/test’, jsonobj, callback)

});
})

$.postJSON = function(url, data, callback) {
return jQuery.ajax({
‘type’ : ‘POST’,
‘url’ : url,
‘contentType’ : ‘application/json’,
‘data’ : JSON.stringify(data),
‘dataType’ : ‘json’,
‘success’ : callback
});
};
</script>
</head>
<body>
JSONオブジェクト
<br>
<textarea id=”jsondata” cols=”60″ rows=”5″>
{“id”:2,”gender”:0,”mobile”:”15072370640″,”password”:”startnew24″,”accessToken”:”ad6bf3dd3cca4b0ca7c9099447994dba”}
</textarea><br>

<button id=”send”>POST</button><br>

<font color=”red” id=”result”></font>
</body>
</html>

2.spring mvcサーバー側:
@RequestMapping(value=”/test”,method=RequestMethod.POST)
public @ResponseBody Map<String, Object> testPostJson(
@RequestBody UserForm userForm,
BindingResult bindingResult) {

Map<String, Object> map = new HashMap<String, Object>();
if (bindingResult.hasErrors()) {
map.put(“errorCode”, “40001”);
map.put(“errorMsg”, bindingResult.getFieldError().getDefaultMessage());
}

map.put(“user”, userForm);
return map;
}

「Java入門」ant使い方メモ

build.xml:
<project name=”olympics” default=”run”>

<property name=”lib_path” value=”lib”/>
<property name=”jar_name” value=”cs3051.jar”/>
<property name=”jar_opencsv” value=”opencsv-2.3.jar”/>
<property name=”dest_dir” value=”build/classes”/>
<property name=”src_dir” value=”src”/>
<property name=”man_class” value=”cs5031.cw1.olympics.OlympicsMedalTable”/>

<!– retrieve the OpenCSV library and put it into the lib_path –>
<target name=”retrieve”>
<mkdir dir=”${lib_path}”/>
<get src=”http://repo1.maven.org/maven2/net/sf/opencsv/opencsv/2.3/opencsv-2.3.jar” dest=”${lib_path}”/>
</target>
<target name=”init”>
<mkdir dir=”${dest_dir}”/>
</target>
<target name=”compile” depends=”init” >
<javac srcdir=”${src_dir}” destdir=”${dest_dir}” classpath=”${lib_path}/${jar_opencsv}”/>
</target>

<target name=”build” depends=”compile”>
<jar jarfile=”${jar_name}” basedir=”${dest_dir}”/>
</target>
<target name=”run” depends=”build”>
<java classname=”${man_class}” classpath=”${jar_name}:${lib_path}/${jar_opencsv};.”/>
</target>

</project>

正規表現式のサンプルコード

メールアドレス:
\w+([-+.’]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

日付:
^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$

ipアドレス:
(\d+)\.(\d+).(\d+).(\d+)

画像リンク:
(s|S)(r|R)(c|C)*=*(‘|”)?(\w|\\|\/|\.)+(‘|”|*|>)?

Javaで正当なメールアドレスかどうかを判断する

Javaコード:
public class Mailcheck_Startnews24 {
public static void main(String[] args) {

//メールアドレス
String check = “^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$”;
Pattern regex = Pattern.compile(check);
Matcher matcher = regex.matcher(“mail@arkgame.com”);
boolean isMatched = matcher.matches();
System.out.println(isMatched);
}

public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String mail=null;
System.out.println(“E-Mailを入力してください:”);
mail=scanner.next();
Pattern pattern=Pattern.compile(“\\w+@(\\w+.)+[a-z]{2,3}”);//\wa-z,A-Z,0-9(\\エスケープ)
Matcher matcher=pattern.matcher(mail);
boolean b=matcher.matches();
if (b) {
System.out.println(mail+”有効なメールアドレス!”);
}else {
System.out.println(mail+”のフォーマットが間違えました!!”);
}
}

/**
*javascriptでメールアドレスの正確を判断
*/
function isEmail(email)
{
var srt=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if(srt.test(email))
{
//無効
return false;
}
else
{
//有効
return true;
}
}
}

public static boolean validateEmail(String email) {
boolean flag = false;
int pos = email.indexOf(“@”);
if (pos == -1 || pos == 0 || pos == email.length() – 1) {
return false;
}
String[] strings = email.split(“@”);//@がない場合
if (strings.length != 2) {
return false;
}
CharSequence cs = strings[0];
for (int i = 0; i < cs.length(); i++) {
char c = cs.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c)) {
return false;
}
}
pos = strings[1].indexOf(“.”);// @の後ろ.がない場合。
if (pos == -1 || pos == 0 || pos == email.length() – 1) {
return false;
}
strings = strings[1].split(“.”);
for (int j = 0; j < strings.length; j++) {
cs = strings[j];
if (cs.length() == 0) {
return false;
}
for (int i = 0; i < cs.length(); i++) {//不規則な文字を含む場合
char c = cs.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c)) {
return false;
}
}
}
return true;
}