C言語を学び、Javaに切り替えた後、Javaの記述方法は非常に複雑であると同時に、一般的に使用されるデータ型の入出力においてC言語ほど便利ではないということを最初に感じました。C言語では、ほとんどの形式はscanf関数で簡単に入力できますが、Javaでは入力できません。Javaのscanfに似たステートメントはありません。この記事は、私の入力と出力の習慣と質問をした記録に基づいており、整数であるがパラメーターで区切られている整数など、これらのさまざまなタイプの要約を作成します。以下の説明のメインクラスはすべてメインクラスであり、入力にはスキャナーを使用します。入力または出力ごとに複数のメソッドが存在する可能性があり、私は比較的単純な書き方しか書きませんでした。
1.文字タイプ
ここでいうchar型とは、1文字だけ入力する場合のことです。
1.1入力フォーマット:
import
java.io.IOException;//导入包
public
class
Main {
public
static
void
main(String[] args)
throws
IOException {
char
ch = (
char)System.in.read();//<1>
System.out.println((
int
)ch);
}
}
説明:IOExceptionとともに使用する必要があります。<1>では、System.inは標準の入力ストリーム(最も一般的なのはキーボード)から入力され、rand()メソッドはこのストリームから入力コンテンツを読み取ることです。<1>の入力結果はint型であり、char型にキャストする必要があります。
1.2例
2、int型
1.1単純なint形式の入力:
これは、1行にint形式の入力が1つしかない場合を指します。たとえば、1行に1つの整数しか入力されない場合です。
java.util.Scannerをインポートします。
public class Main { public static void main(String [] args){ Scanner scan = new Scanner(System.in); int num = scan.nextInt(); System.out.println(num); } }
1.2例
備考:長いnumが必要です。そうしないと、numが大きすぎると結果が不正確になります。
2.1スペースを含むint形式での入力:
2334フォーマットのようなもの。2つの数字の間にスペースがあります。現時点では、int入力だけでは問題は解決しません。もちろん、2つのscan.nextInt()を連続して入力することもできます。ただし、この時点でも角度を変更する必要があります。23 34を全体として文字列と見なし、スペースで分割して23と34の2つの文字列に分割し、これら2つの文字列を整数に変換します。split()メソッドについては、公式ヘルプマニュアルを参照してください。
インポートjava.util.Scanner ;
public class Main { public static void main(String [] args){
Scanner scan = new Scanner(System.in);
String [] str = scan.nextLine()。split( "[]"); //いくつかの部分に分割され、いくつかの文字列配列があります。ここに2つの
intがあります。 = Integer.parseInt(str [0]);
int b = Integer.parseInt(str [1]); // etc ...
System.out.println(a + "" + b);
}
}
2.2例
3.1複雑なint形式の入力
入力a=3、b = 2と同様に、方法は2.1で説明したものと同じです。ここでは、例に直接進みます。
3.2例
long型とint型の入力は類似しており、繰り返されません。
3、ダブル
Javaでは、float型ではなくdouble型を使用する必要があります。
浮動小数点の主な点は、小数点以下2桁を保持する形式など、形式化された出力です。Javaには、C言語に似たprintfメソッドがあり、Stringでformat()メソッドを使用してそれを実現することもできます。
1.1doubleは2桁のフォーマット出力を保持します
java.util.Scannerをインポートします。
public class Main { public static void main(String [] args){ Scanner scan = new Scanner(System.in); double num = scan.nextDouble(); 文字列a=String.format( "%。2f"、num); System.out.println(a); } }// printf形式の出力:
//System.out.printf("%2f"、num);
1.2例
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
String[] num = str.split("[;,]");
String a = String.format("%.2f", Double.parseDouble((num[1])));
String b = String.format("%.2f", Double.parseDouble((num[2])));
String c = String.format("%.2f", Double.parseDouble((num[3])));
System.out.println("The each subject score of No. " + num[0] + " is " + a + ", " + b + ", " + c + ".");
}
}
4.複数回入力します
1.1入力フォーマット
C言語では、複数の入力をループする2つの簡単な方法があります。
while(scanf( "%d"、&n)!= EOF)
while(〜scanf( "%d"、&n))
Javaには、簡単な方法もあります。
while(scan.hasNext())
1.2例
単一文字の複数のグループを入力する場合、それらを文字タイプに変換するには、文字列形式で入力する必要があることに注意してください。
5.アレイ
入力はC言語の入力と似ています。ただし、文字列などの入力の場合、C言語ではポインタ型であり、Javaでは独自の特殊文字列型があります。C言語のようにポインタを学習せずにループ内の各文字を入力することはできません。文字列を構成します。
1.1配列入力フォーマット:
java.util.Scannerをインポートします。
public class Main { public static void main(String [] args){ Scanner scan = new Scanner(System.in); int [] arr = new int [3]; //追加入3´for (int i = 0; i <arr.length; i ++){ arr [i] = scan.nextInt(); } for(int i = 0; i <arr.length; i ++){ System.out.print(arr [i] + ""); } } }
2.1配列を文字列に変換する
配列でtoString()メソッドを使用するだけです。
java.util.Scannerをインポートします。
java.util.Arraysをインポートします。
public class Main { public static void main(String [] args){ Scanner scan = new Scanner(System.in); int [] arr = new int [3]; //追加入3´for (int i = 0; i <arr.length; i ++){ arr [i] = scan.nextInt(); } System.out.println(Arrays.toString(arr)); } }
1、2、3と入力すると、[1,2,3]が表示されます。OJの質問の形式が123である場合があります。[1,2,3]このフォーマットも渡すことができます。
6.ストリング
入力のほとんどが文字列型に変換されるため。したがって、文字列の場合、分割された文字列を整数、浮動小数点型、配列などに変換するなど、変換する必要のある操作が多数あります。
1.1文字列を整数、浮動小数点型に変換する(例として整数を取り上げる)
int a = Integer.parseInt(str [0]); //str[0]は除算後の文字「1」であると想定します
1.2整数、浮動小数点から文字列への変換
int num = 10;
//メソッド1
文字列str1=num + ""; // ""は空の文字列を表し、Javaのnullとは異なります
//メソッド2
文字列str2=String.valueOf(num);
2.1文字列を文字配列に変換する
java.util.Scannerをインポートします。
java.util.Arraysをインポートします。
パブリッククラスメイン{
public static void main(String [] args){
スキャナースキャン=新しいスキャナー(System.in);
文字列str=scan.nextLine();
char [] arr = str.toCharArray();
for(int i = 0; i <arr.length; i ++){
System.out.print(arr [i] + "");
}
}
}
2.2文字配列を文字列に変換する
//メソッド1
new String(arr);
//メソッド2
String.copyValueOf(arr);
3例
説明:文字列を入力し、文字列の反転を実装する関数を記述します。コードは次のように表示されます。
import java.util.Scanner;
public class Main {
public static String my_reverse(String str) {
int left = 0;
int right = str.length() - 1;
char[] arr = str.toCharArray();
while(left < right) {
char tmp = 0;
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
return new String(arr);
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
String ret = my_reverse(str);
System.out.println(ret);
}
}
結果は次のとおりです。
7.クイック入力
入力にスキャナーを使用するのは比較的遅いです。これが新しい入出力関数です。それらと比較して、長所は速度が比較的速いことであり、短所はそれが長すぎてタイピングが非常に面倒であるということかもしれません。
import java.io.*;
//省略了Main
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(bf.readLine());
System.out.println(a);
double b = Double.parseDouble(bf.readLine());
System.out.println(b);
char c = bf.readLine().charAt(0);
System.out.println(c);
char d = (char)bf.read();//都可以,但是这个不能和多组输入连用,原因是它保留了换行。
System.out.println(d);
System.out.println("------");
String str = null;
//多组输入
while((str = bf.readLine()) != null) {
char ch = str.charAt(0);//其他的类似
System.out.println(ch);
}
}
8.最後に書く
これらの入力は一般的です。コードを書くほど、それらをよりよく習得できます。