做了實習的第一個筆試,方法都寫的好好的,自己idea上也ok,到了牛客網上就數組越界,心塞的不行。查了一下都講是輸入輸出的問題。一方面覺得筆試這樣設置非常不合理,另一方面也明白是自己輸入輸出着實沒學到位,因此沒有這方面應急能力。所以總結一下輸入輸出。
步驟:
(1)創建Scanner對象,接受從控制檯輸入
Scanner input=new Scanner(System.in);
(2)接受String類型或int類型
String str=new input.next();
int n=input.nextInt();
/*在新增一個Scanner對象時需要一個System.in對象,因爲實際上還是System.in在取得用戶輸入。Scanner的next()方法用以取得用戶輸入的字符串;nextInt()將取得的輸入字符串轉換爲整數類型;同樣,nextFloat()轉換成浮點型;nextBoolean()轉換成布爾型。*/
例:
(1)輸入一個字符串或數
import java.util.Scanner;
public class Demo59 {
public static void main(String[] args) {
//創建Scanner對象,接受從控制檯輸入
Scanner input=new Scanner(System.in);
//接受String類型
String str=input.next();
//輸出結果
System.out.println(str);
}
}
(2)連續輸入多行數,以空行結束
public static void inputInteger() {
Scanner scanner = new Scanner(System.in);
String nextLine = scanner.nextLine();
int sum = 0;
while (nextLine != null && !nextLine.equals("")) {
sum += Integer.parseInt(nextLine);
System.out.println(sum);
nextLine = scanner.nextLine();
}
System.out.println("end of input integer");
}
(3)連續輸入多行字符串,以空行結束
public static void main(String[] args)
{
StringBuilder stringbuilder = new StringBuilder();
Scanner scanner = new Scanner(System.in);
while(true)
{
String text = scanner.nextLine().trim();
if ("".equals(text))
{
break;
}
stringbuilder.append(text);
}
System.out.println(stringbuilder.toString());
}
注:trim用於去除字符串兩端Unicode編碼小於等於32(\u0020)的所有字符;還可使用trim()的重載方法String.Trim(Char[])自定義需去除的符號。
(4)輸入多個數值,以空格分開
public static void inputIntInLine() {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
String[] numstr = str.split(" ");
int[] nums = new int[numstr.length];
for(int i = 0; i < numstr.length; i ++) {
nums[i] = Integer.parseInt(numstr[i]);
}
for(int n: nums) {
System.out.println(n);
}
System.out.println("end of input int in a line");
}
(5)做題時可以正確的輸入
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String str = in.nextLine();
System.out.println(str);
}
}
}