牛客 - 输入输出 练习题:
https://ac.nowcoder.com/acm/contest/320#question
import java.util.Scanner;//util.Scanner public class Main{//class类名 public static void main(String[] args){//public static void main() //括号里面:String[] args Scanner sc= new Scanner(System.in);//Scanner类,新建对象sc //括号里:System.in while(sc.hasNext()){//循环输入:sc.hasNext()==true int x1=sc.nextInt();//下一个Int: sc.nextInt() int x2=sc.nextInt(); //sc.nextLine(); int s=x1+x2; System.out.println(s);//输出用:System.out.println() } } }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc= new Scanner(System.in); while(true){ int n=sc.nextInt(); if(n==0)break; int s=0; for (int i=0;i<n;i++){ int temp=sc.nextInt(); s+=temp; } System.out.println(s); } } }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNextLine()){//hasNextLine()按行判断 String[] s=sc.nextLine().split(" ");//.nextLine后面要有括号 //后面接上split(" ") int len=s.length;//String数组也属于基本的类型,使用无括号的.length int sum=0; for (int i=0;i<len;i++){ int temp=Integer.valueOf(s[i]);//从行里面(String数组)里选取 //然后使用Integer.valueOf()转换字符串为数字 sum+=temp; } System.out.println(sum); } } }
import java.util.Scanner; import java.util.Arrays;//引入 util.Arrays public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); String[]s=new String[n];//new String后面不是圆括号,而是方括号[] //可以使用n这个已获得的变量 for(int i=0;i<n;i++){ s[i]=sc.next();// } Arrays.sort(s);//使用.sort()排序 for (int i=0;i<n;i++){ System.out.print(s[i]); if(i!=n-1)System.out.print(" "); } } }
import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNextLine()){// String[] s=sc.nextLine().split(" "); int len=s.length; Arrays.sort(s);//直接用Arrays.sort()对已有的String数组进行排序 for (int i=0;i<len;i++){ System.out.print(s[i]); if(i!=len-1)System.out.print(" "); else System.out.println();//不空格,就换行 } } } }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){//为什么要用hasNext(),不用hasNextLine(): 因为输入描述里面,没收是按行给,可能全部在一行里面 long x1=sc.nextLong();//整数,可能是长整数 //要用nextLong() 而不是nextInt() long x2=sc.nextLong();//nextLong/nextInt/nextLine...而直接next,是String类型; long sum=x1+x2; System.out.println(sum); } } }
输入输出 总结
基础输入: .next() .hasNext()两个系列
sc.next() //String
sc.nextLine() //一行,形式为String
sc.nextInt() sc.nextDouble()
复杂输入: substring + split 伺候
例1
输入是 [1,2,0,0,2,1]
需要转换成数组
//由于输入的是String类型,所以需要转换 String str = sc.nextLine(); String[] strs = str.substring(1,str.length()-1).split(",");//先去掉头尾的方括号;再去掉逗号;
//用的时候需要循环,将String[]转换为int[]
例2
输入是 5,6,8,26,50,48,52,55,10,1,2,1,20,5:3
需要转换成数组,和冒号后面的一个width;
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String string = sc.nextLine(); String[] strs = string.substring(0,string.length()-2).split(","); int size = strs.length; int[] nums = new int[size]; for(int i=0; i<=size-1; ++i){ nums[i] = Integer.valueOf(strs[i]); System.out.println("nums[i] = " + nums[i]); } int width = Integer.valueOf(string.substring(string.length()-1,string.length())); double sum = 0; for(int i = 0; i<=width-1; ++i){ sum += nums[i]; } double maxRatio = 1; for(int i=0; i<size-width; ++i){ double old = sum; sum = sum-nums[i]+nums[i+width]; double ratio = sum/old; maxRatio = Math.max(maxRatio,ratio); } maxRatio -= 1; maxRatio *= 100; System.out.printf("%.2f", maxRatio);//printf System.out.println("%"); } } //5,6,8,26,50,48,52,55,10,1,2,1,20,5:3 //475.00%
输出指定格式
见上方 %.2f 的例子