0
1

More than 1 year has passed since last update.

[Java]使いそうな部分まとめ

Last updated at Posted at 2023-01-25

はじめに

学内でJavaの競技会があるらしいので、競技プログラミングで使えそうな記述をまとめておきました

参考

Java 標準入力 - Qiita

Javaの文字列操作【プログラミング初心者向け教材】

標準入出力

入力

基本

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // Scanner クラスは標準入力を取得するのに必要
        String s = sc.next();  // 文字列
		int n = sc.nextInt();  // 整数
    }
}

一行複数・複数行一列

どちらも同じように next() で取れる。

// 要素数をnとする
String[] a = new Array(n);
for(int i=0; i<n; i++) a[i] = sc.next();

複数行複数(二次元)

nextLine() で取得した行をsplit() で分割する方法もあるが、たいていは二重ループで解決できる。

for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        s[i][j] = in.next();
    }
}

出力

基本

System.out.println(out);

文字列操作

結合

単にふたつの文字列を結合するのみであれば、+演算子でいい。

String s = "hoge" + "huga"; // hogehuga

破壊的変更(変数の値を書き換えること)もできる。

String s = "hoge";
s += "huga"; // hogehuga

抽出

String.substring(start, end) を使う。

扱い方はPythonのスライスと大差ないが、インデックスにマイナスを指定することはできない。

String s = "hogehugapiyo";
System.out.println(s.substring(4, 8)); // "huga"

長さを求める

String.length() で可能。

String s = "hoge";
System.out.println(s.length()); // 4

0文字であるかどうかを判定したい場合は、かわりにString.isEmpty() を使うこともできる。

String s = "";
System.out.println(s.isEmpty()); // true

検索

正規表現

String.matches(format)に正規表現を示す文字列を与えることで検索できる。

String s = "hogehugapiyo";
System.out.println(s.matches(".*huga.*")); // true

含むか

「~を含む」かどうかを調べるときにはString.contains()が使える。

String s = "hogehugapiyo";
System.out.println(s.contains("hoge")); // true

前方検索

「~から始まる」かどうかを調べるときにはString.startsWith()が使える。

String s = "hogehugapiyo";
System.out.println(s.startsWith("hoge")); // true

後方検索

「~で終わる」かどうかを調べるときはString.endsWith()を使う。

String s = "hogehugapiyo";
System.out.println(s.endsWith("piyo")); // true

インデックス検索

指定した文字が最初・最後に現れる位置のインデックスを取得したい場合、String.indexOf(), String.lastIndexOf()を使う。

このとき、基準となるのは文字列の頭の位置である点に注意。

String s = "hogehugapiyo";
System.out.println(s.indexOf("huga"));  // 4

置換

置換にはString.replace(old, new)を用いる。

oldに一致する文字列はすべてnewに置き換えられる。

String s = "abcabcabc";
System.out.println(s.replace("a", "x")); // xbcxbcxbc

特定の文字列を削除する際も同様の方法をとる。

String s = "hogehugapiyo";
System.out.println(s.replace("huga", "")); // hogepiyo

正規表現を使いたい場合、かわりにString.replaceAll(old, new)を使う。

String s = "abcabcabc";
System.out.println(s.replaceAll("[abc]", "x")); // xxxxxxxxx

正規表現を用いて、かつ最初に見つかった文字列を置き換える場合、String.replaceFirst(old, new)を使う。

String s = "abcabcabc";
System.out.println(s.replaceFirst("[abc]", "x")); // xbcabcabc

分割

文字を区切って配列に格納する際はString.split(delimiter)を用いる。こちらは区切り文字の指定が必要。

String s = "hoge huga piyo";
String[] l = s.split(" "); // ["hoge", "huga", "piyo"]

型変換

文字列→整数

Integer.parseInt()を使う。

String s = "123";
int n = Integer.parseInt(s); // 123

整数→文字列

String.valueOf()を使う。

int n = 123;
String s = String.valueOf(123); // "123"

比較

ほとんどの場合、比較演算子==で解決する…が、StringやInteger型はオブジェクト型なので注意。

これらの型はequals()で比較する。

String s = "hoge";
System.out.println(s.equals("hoge")); // true
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1