1. 無料アクセス解析

プログラミングに没頭しているあるIT技術者の日々

プログラミングに関する技術やコードについて、日々思ったことを書いていくブログです。

Java Randomクラスを使った乱数の生成

たまたま思いついてしまって、つい書いてみました。

好きな人が複数いるのを前提としてますので、浮気と取られかねない既婚者や恋人がいる方はやめましょう(笑)

import java.util.*;
import java.io.*;
import static java.lang.Integer.parseInt;

class Part26{
public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("あなたは今、何人好きな人がいますか?");
String[] str = new String[parseInt(br.readLine())];
System.out.println("ではその人達の名前を先程指定した人数分入力してください");
for(int i = 0; i < str.length; i++){
str[i] = br.readLine();
}
System.out.println("今、入力した人の中であなたが一番好きな人は");
int j = new Random().nextInt(str.length);
System.out.println(str[j]+"さんですね?");
}
catch(Exception e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java 可変長引数リスト(mainメソッドに対して)

ジェネリックスも少し飽きてきたしネタも減ってきたので違うコードを。

mainメソッドでもOKなんですね。

class Part25{
public static void main(String... args){
for(String s:args)
System.out.println(s);
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(LinkedListによるリスト要素の入れ替え)

ジェネリックスというより、各コレクションクラスのプログラムみたくなって来ましたね(笑)

今度は上手くいった。

import java.util.*;
import java.io.*;
import static java.lang.Integer.parseInt;

class Part24{
public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
LinkedList list = new LinkedList();
System.out.print("リストの長さを指定してください:");
int i = parseInt(br.readLine());
for(int j = 0; j < i; j++){
System.out.println("要素を入力してください");
list.add(parseInt(br.readLine()));
}
for(int k = 0,l = list.size()-1; k < l; k++,l--){
int m = list.set(k,list.get(l));
list.set(l,m);
}
System.out.println("リストの要素を逆順に並び替えた結果を出力します");
for(int in:list)
System.out.println(in);
}
catch(Exception e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(メソッドでの型パラメータの使用とCharacterクラス)

今回は時間切れの為、ここで終了しますが、まだ動作がおかしいので後で編集します。

import java.util.*;
import java.io.*;
import static java.lang.Integer.parseInt;


class Part23{

public static void exchage(T[] a){
for(int i = 0,j = a.length-1; i == j; i++,j--){
T b = a[i];
a[i] = a[j];
a[j] = b;
}
}

public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("配列の長さを指定してください:");
Character[] a = new Character[parseInt(br.readLine())];
System.out.println("配列の要素を入力してください");
for(int i = 0; i < a.length; i++){
a[i] = (char)br.read();
}
exchage(a);
System.out.println("配列の要素を逆に入れ替えた結果を出力します");
for(int j = 0; j < a.length; j++){
System.out.println(a[j]);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}

配列を二つ宣言してやっと出来ました。

というより、一つの配列の中で要素の交換って出来ないのか?

これも、何とかしてみます。

import java.util.*;
import java.io.*;
import static java.lang.Integer.parseInt;


class Part23{

public static void exchage(T[] a,T[] b){
for(int i = 0,j = a.length-1; i < a.length; i++,j--){
T c = a[i];
a[i] = b[j];
b[j] = c;
}
}

public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("配列の長さを指定してください:");
Character[] a = new Character[parseInt(br.readLine())];
Character[] b = new Character[a.length];
System.out.println("配列の要素を入力してください");
for(int i = 0; i < a.length; i++){
a[i] = (char)br.read();
b[i] = (char)br.read();
}
exchage(a,b);
System.out.println("配列の要素を逆に入れ替えた結果を出力します");
for(int j = 0; j < a.length; j++){
System.out.println(a[j]);
System.out.println(b[j]);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}

うお〜、何とfor文の終了条件がちょっとだけ間違えていたせいだったとは・・・。

死んでください俺って気分です・・・。

import java.util.*;
import java.io.*;
import static java.lang.Integer.parseInt;


class Part23{

public static void exchage(T[] a){
for(int i = 0,j = a.length-1; i < j; i++,j--){
T b = a[i];
a[i] = a[j];
a[j] = b;
}
}

public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("配列の長さを指定してください:");
Character[] a = new Character[parseInt(br.readLine())];
System.out.println("配列の要素を入力してください");
for(int i = 0; i < a.length; i++){
a[i] = (char)br.read();
}
exchage(a);
System.out.println("配列の要素を逆に入れ替えた結果を出力します");
for(int j = 0; j < a.length; j++){
System.out.println(a[j]);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(Comparatorを使った昇順Sort)

import java.util.*;
import java.io.*;
import static java.lang.Integer.parseInt;

class ComparatorSample implements Comparator{

public int compare(Integer a,Integer b){
return a.compareTo(b);
}

public boolean equals(Object o){
return o == this;
}
}

class Part22{

public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("配列のサイズを整数で指定してください:");
Integer[] n = new Integer[parseInt(br.readLine())];
System.out.println("配列に入れる整数を入力してください");
for(int i = 0; i < n.length; i++){
n[i] = parseInt(br.readLine());
}
Arrays.sort(n,new ComparatorSample());
System.out.println("配列内を昇順にソートした結果を表示します");
for(int j = 0; j < n.length; j++){
System.out.println(n[j]);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(型パラメータ)

別に継承はしなくてもOK。

import java.io.*;
import static java.lang.Integer.parseInt;

class Part21super{

protected t1 type1;
protected t2 type2;

protected Part21super(){}

protected Part21super(t1 type1,t2 type2){

this.type1 = type1;
this.type2 = type2;
}
protected t1 getType1(){ return type1; }

protected t2 getType2(){ return type2; }
}

class Part21sub extends Part21super{

public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Part21super sup = new Part21super(br.readLine(),parseInt(br.readLine()));
System.out.println("String型は"+sup.getType1()+"でInteger型は"+sup.getType2()+"です。");
}
catch(Exception e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(MapのList)

なんとなく思いついたのでやってみましたが、変わった形で出力されるんですね。

是非、試してみて頂ければと思います。

まあ、業務では全く使わないかもしれませんが(笑)

import java.util.*;
import java.io.*;

class Part20{
public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Map map1 = new HashMap();
System.out.println("最初は名字を、次は名前を入力してください。");
map1.put(br.readLine(),br.readLine());

List> list1 = new ArrayList>();
list1.add(map1);
System.out.println(list1.get(0));
}
catch(IOException e){
e.printStackTrace();
}
}
}

今度は、逆パターンをやってみたんですが、どうやっても出力がnullになってしまいます。

Listの値をキーにしてマッピングする方が業務でも使いそうなんですけどねぇ〜。

これこそ冗談抜きで解説出来る人が居たら、本当に尊敬しそうです(笑)

import java.util.*;
import java.io.*;

class Part20{
public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
List list = new ArrayList();
System.out.println("名字を入力してください");
list.add(br.readLine());

Map map = new HashMap();
System.out.println("名前を入力してください");
map.put(list.get(0),br.readLine());
System.out.println(map.get(0));
}
catch(IOException e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(ListのList)

書き方が変わっているので注意。

import java.util.*;
import java.io.*;

class Part19{
public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
List list1 = new ArrayList();
list1.add(br.readLine());

List> list2 = new ArrayList>();
list2.add(list1);
System.out.println(list2.get(0).get(0));
}
catch(IOException e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(Mapクラス)

最近ちょっと忙しくなって来ましたが、頑張って毎日続けます。

もし、毎日書くのが無理そうになったら休みの日にでもまとめて書こうかと思います。

import java.util.*;
import java.io.*;
import static java.lang.Integer.parseInt;

class Part18{
public static void main(String args[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Map map = new HashMap();
System.out.println("リストに幾つ値を入れるか整数で指定してください");
int a = parseInt(br.readLine());
for(int i = 1; i <= a; i++){
System.out.println("文字列で値を入力してください。");
map.put(i,br.readLine());
}
for(int i = 1; i <= map.size(); i++){
System.out.println(i+"番目に入力した値は"+map.get(i)+"です。");
}
}
catch(NumberFormatException e){
System.out.println("全半角の整数を入力してください");
}
catch(IOException e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |

Java ジェネリックス(型チェックPART3)

こうすれば、整数以外の入力を受け付けなくなる。

import java.util.*;
import java.io.*;
import java.util.regex.*;
import static java.lang.Integer.parseInt;

class Part17{
public static void main(String args[]){
try{
List list = new ArrayList();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("整数を入力してください:");
list.add(parseInt(br.readLine()));
method1(list);
}
catch(NumberFormatException n){
System.out.println("全半角の整数を入力してください。");
}
catch(Exception e){
e.printStackTrace();
}
}
public static void method1(List list1){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("もう一度整数を入力してください:");
list1.add(parseInt(br.readLine()));
System.out.println("最初に入力した整数は"+list1.get(0)+"です。");
System.out.println("次に入力した整数は"+list1.get(1)+"です。");
}
catch(NumberFormatException n){
System.out.println("全半角の整数を入力してください。");
}
catch(Exception e){
e.printStackTrace();
}
}
}

Java | コメント:0 | トラックバック:0 |
| HOME | NEXT