【总结】
1. 一直输入模板
import java.util.*;
public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {//操作}}
}
2. 有组数或者输入个数
import java.util.Scanner;
public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n=sc.nextInt();while(n>0) {//操作n--;}}
}
3. 一行有多个信息 split切分
// a c bb 一直输入
import java.util.*;import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {String[] strs = sc.nextLine().split(" ");//操作}}
}
4.含结束标志
/**4. 数组求和 0为结束*
4 1 2 3 4(4个数 和为1+2+3+4 )
5 1 2 3 4 5
0*
10
15*/import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()){int n = sc.nextInt();if (n == 0) {return;}int sum = 0;//while (n-- > 0){// sum += input.nextInt();//}for (int i = 0; i < n; i++) {sum += sc.nextInt();}System.out.println(sum);}}}
5. 小技巧 /函数
5.1 拼接
String[] strs = sc.nextLine().split(" ");Arrays.sort(strs);// System.out.println(String.join(" ",s));String res = "";for(String s : strs)res += s + " ";System.out.println(res.trim());
5.2 强转型 字符串数组转整数
// sc 0 0 0 0 0
String[] str = sc.nextLine().split(" ");for(int i=0;i<str.length;i++){sum+=Integer.parseInt(str[i]);}//for(String str:int1){// i+=Integer.valueOf(str);//}
[小技巧][JAVA][转换]字符数组与字符串之间互相转换
[小技巧][JAVA][转换]整型与字符串相互转换
6.next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
链接:https://www.runoob.com/java/java-scanner-class.html
【牛客网想对你说】
每年前几场在线笔试编程题的时候,总有同学询问为什么我本地测试通过,自测也通过,提交代码系统却返回通过率0。
这不是系统的错,可能是因为
1.你对题目理解错了,你的代码只过了样例或你自己的数据
2.你的代码逻辑有问题,你的代码只过了样例或你自己的数据
总之就是你的代码只是过了样例和自测数据,后台的测试数据你根本不可见,要多自己思考。
这个题目如果你提交后通过率为0,又觉得自己代码是正确的,可以 点击查看 通过的代码
谨记:
当你笔试的时候怀疑系统或者题目数据有问题的时候请务必先怀疑自己的代码!
当你笔试的时候怀疑系统或者题目数据有问题的时候请务必先怀疑自己的代码!
链接:https://ac.nowcoder.com/acm/contest/5647/K
来源:牛客网
【练习答案汇总】
/**1.数组求和 一直输入
* 1 5
10 20
*
* 630
* */
import java.util.*;
public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int a = sc.nextInt();// long a=sc.nextLong();int b = sc.nextInt();// long b=sc.nextLong();System.out.println(a + b);}}
}/** 2.数组求和 有组数*
2(组数)
1 5
10 20*
6
30* */
import java.util.Scanner;
public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n=sc.nextInt();while(n>0) {int a=sc.nextInt();int b = sc.nextInt();int sum=a+b;System.out.println(sum);n--;}}
}/** 3.数组 0 0 为结束*
1 5
10 200 0*
6
30* */
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);while (input.hasNext()){int a = input.nextInt();int b = input.nextInt();//!if (a == 0 && b == 0){break;}System.out.println(a + b);}}
}/**4. 数组求和 0为结束*
4 1 2 3 4(4个数 和为1+2+3+4 )
5 1 2 3 4 5
0*
10
15*/import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()){int n = sc.nextInt();if (n == 0) {return;}int sum = 0;//while (n-- > 0){// sum += input.nextInt();//}for (int i = 0; i < n; i++) {sum += sc.nextInt();}System.out.println(sum);}}}/** 5. 数组求和 有组数*
2(组数)
4 1 2 3 4 (4个数 和为1+2+3+4 )
5 1 2 3 4 5**10
15*/import java.util.*;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);int t=sc.nextInt();for(int i=0;i<t;i++){int num=sc.nextInt();int sum=0;for(int j=0;j<num;j++){sum=sum+sc.nextInt();}System.out.println(sum);}}
}
/**6. 数组求和 一直输入4 1 2 3 4 (4个数 和为1+2+3+4 )5 1 2 3 4 5*1015
*/
import java.util.Scanner;
public class Main{public static void main(String [] args){Scanner sc = new Scanner(System.in);while(sc.hasNext()){int n = sc.nextInt();int sum = 0;for(int i =0;i<n;i++){sum += sc.nextInt();}System.out.println(sum);}}}/** 7,数组求和 直接求 一直输入*
1 2 3
4 5
0 0 0 0 0*
6
9
0*/
import java.util.Scanner;
public class Main{public static void main(String [] args){Scanner sc = new Scanner(System.in);while(sc.hasNext()){int sum = 0;String[] str = sc.nextLine().split(" ");for(int i=0;i<str.length;i++){sum+=Integer.parseInt(str[i]);}//for(String str:int1){// i+=Integer.valueOf(str);//}System.out.println(sum);}}
}/** 字符串1 有个数*5(个数)c d a bb e*a bb c d e*/
import java.util.Scanner;
import java.util.Arrays;
import java.util.*;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int num = sc.nextInt();String[] s = new String[num];for(int i = 0;i < num; i++){s[i] = sc.next();}Arrays.sort(s);System.out.println(String.join(" ",s));}}}/** 字符串2 一直输入*a c bbf ddddnowcoder**a bb cdddd fnowcoder*/
import java.util.*;import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while(in.hasNext()) {String[] strs = in.nextLine().split(" ");Arrays.sort(strs);// System.out.println(String.join(" ",s));String res = "";for(String s : strs)res += s + " ";System.out.println(res.trim());}}
}/** 字符串3 一直输入 ,号间隔 a,c,bbf,ddddnowcoder*a,bb,cdddd,fnowcoder*/import java.util.*;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while(in.hasNext()) {String[] strs = in.nextLine().split(",");Arrays.sort(strs);// System.out.println(String.join(",",s));String res = "";for(String s : strs)res += s + ",";System.out.println(res.substring(0, res.length() - 1));}}
}