プログラムを作成するとき、整数入力形式で問題が発生することがよくあります。
たとえば、「最初の行は、行列の数を表す整数n(1≤n≤26)です。次に、n行あります。各行の先頭は大文字で、matrix.nameの後に、行列の行と列の数を表す2つの整数が続きます。"など。
-
このような問題が発生した場合は、最初に文字列文字列を定義し、定義された文字列に入力を入れることができます
String str=scanner.nextLine();
-
次に、文字列文字列を文字列配列に変換し、splitメソッドを呼び出して、整数以外の要素を削除します。
String[] temp= str.split(" ");
-
整数の配列を定義する
int[] number=new int[temp.length];
-
ループを使用して、型変換を使用して文字列配列の各要素を整数配列に変換します
for(int i=0;i<number.length;i++)
{
number[i]=Integer.parseInt(temp[i]);
}
このようにして、整数の任意の入力フォーマットを実現できるだけでなく、ステップ3および4の配列タイプを置き換える限り、他のタイプの配列の異なる入力フォーマットも実現できます。
テスト結果は次のとおりです。
最初に示した例を実装するには、データクラスを定義する必要があります。完全なコードは次のとおりです。
import java.util.Scanner;
public class MatrixMultiply {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String NumberS=scanner.nextLine();
int Number=Integer.parseInt(NumberS);
data[] dateTemp=new data[Number];
for(int i=0;i<Number;i++){
dateTemp[i]=new data();
String temp=scanner.nextLine();
String[] tempArr= temp.split(" ");
dateTemp[i].setName(tempArr[0]);
dateTemp[i].setRows(Integer.parseInt(tempArr[1]));
dateTemp[i].setColumn(Integer.parseInt(tempArr[2]));
}
//输出测试
for(int i=0;i<Number;i++){
System.out.println(dateTemp[i]);
}
}
class data{
private String Name;
private int Rows;
private int Column;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getRows() {
return Rows;
}
public void setRows(int rows) {
Rows = rows;
}
public int getColumn() {
return Column;
}
public void setColumn(int column) {
Column = column;
}
public String toString(){
return this.getName()+" "+this.getRows()+" "+this.getColumn();
}
}
テスト結果は次のとおりです。