赛码答题系统 输入输出知识总结-Scanner

在答题系统里有这样一段话,大家要注意:
使用Java语言请注意,不要自定义包名称,否则会报错,即不要添加package answer之类的语句;您可以写很多个类,但是必须有一个类名为Main,并且为public属性,并且Main为唯一的public class,Main类的里面必须包含一个名字为’main’的静态方法(函数),这个方法是程序的入口。
(开始对这句话完全忽略,最后导致编译过不了,所以要记着,main方法要放到public Class Mian类中,不要自己起名字)

之后我们就要无比认真的去看它的输入、输出格式要求,我这里主要分了以下几类:

输入部分

首先定义一个Scanner对象:

import java.util.Scanner;
Scanner scan = new Scanner(System.in);

需要换行直接输入scan.nextLine(); (nextLine()只读取输入直到换行)

输入一个整数

int len = scan.nextInt();

如要求输入为:1

一行输入两个整数,并且赋值给两个变量,用空格隔开
如要求输入为1 2
变量int a = 1,int b = 2

分析 就是用空格作为上一次输入的结束,所以用scan.next();还要将其转为int形

String A = scan.next();
int a = Integer.parseInt(A);
String B = scan.next();
int b = Integer.parseInt(B);

空格分隔的数组

int[]widths = new int[7];
        for(int i=0;i<7;i++){
        	widths[i]=scan.nextInt();
            
        }
scan.nextLine();

如要求输入为1 2 3 4 5 6 7
返回一个长度为7的数组

逗号分隔的数组
如要求输入为1,2,3,4,5,6,7
返回一个长度为7的数组

分析,其实输入就是为一个用逗号隔开的字符串,既然是字符串,二且中间有非空格的分隔符,我们就想到用scan.next()或者scan.nextLine(),然后要把这个输入的字符串转
成数组形式。

        String inputString = scan.nextLine();输入,遇到换行就结束
        
        将输入的带逗号的字符串转成int数组
        String[] stringArray = inputString.split(",");
        int[] widths = new int[stringArray.length];
        for(int i = 0;i<stringArray.length;i++) {
        	widths[i]=Integer.parseInt(stringArray[i]);
        }

后边这几种输入最后将我们的变量赋值为String类型。
输入一个可以用除空格外其他字符分隔的字符串

String a = scan.next();

输入可以有空格或除回车外所有符号的字符串

String b = scan.nextLine()

在遇到终止条件前不断输入:hasNext()方法
如要实现不听输入数字串,直到一个字符串的长度为1,:
123435
2425
1245
4

String a ="";
while(scan.hasNext){
    String element = scan.nextLine();
    if(element.length()<2){
         a=element;
         break;
    }else{
         array.add(element);
    }
}

其实就是要牢牢把握next、nextLine的区别:
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
通俗一点将,next只要遇到空格,就结束,空格前边的输入便赋给变量,是String类型
nextLine只要遇到换行,就结束,换行前边的输入便赋给变量,是String类型

输出部分

保留两位小数输出:
方法一:String的format方法(推荐)(不四舍五入)

double f = 111231.5585;
System.out.println(String.format("%.2f", f));

方法二:DecimalFormat的format方法(四舍五入)

double f = 111231.5585;

DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));

printf的格式化输出作为了解:

在这里插入代码片

任意类型转String
String s = String.valueOf( value); // 其中 value 为任意一种数字类型。
字符串型转换成各种数字类型:
String s = “169”;
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );

你可能感兴趣的:(笔试,java)