JAVA截断扫描仪输入

时间:2017-03-21 14:33:45

标签: java arrays for-loop number-formatting truncate

我有一个程序要求用户输入一个int(使用扫描仪)。 我只想让程序输入7位数。 如果输入不是7位数,我想将其截断为7位数。

所以,如果数字是12345678,我希望它是1234567。

目前我将输入存储在如下数组中:

for(int i = 0; i > 7; i++)
  {
    numbers[i] = input1 % 10; 
    input1 /= 10;
    System.out.print(numbers[i]);
    //stores the numbers backwards so if input was 123, first element would be 3, 2, 1
  }

所以当我遇到问题时如果我输入12345678,它会将其存储为8765432.我希望它存储为7654321。

如果有人对我的循环有任何建议,使号码存储为1234567或7654321,那将非常有用:)

3 个答案:

答案 0 :(得分:2)

嗯,有几件事情。

首先,我认为使用ArrayList并使用Integers更好,而不是像int这样的原始类型。如果您使用ArrayList,则可以.add(Integer e)Integer放入列表中。

接下来,你的循环应该是: for(int i = 0; i < 7; i++)代替for(int i = 0; i > 7; i++)。看到不同?如果您使用i++,则使用<限制循环,而不是>

至于扭转输入,它很简单,改为使用i--,但我认为你可以自己解决这个问题。

答案 1 :(得分:2)

更简单的方法是将输入保存到String中 然后检查是否length>7,如果是,则保留7个第一个字符,如果不是,则不执行任何操作;)

String input1 = sc.nextLine();
if(input1.length>7){
   input1 = input1.substring(0,7);
}
int input = Integer.valueOf(input1);

它比单独存储每个数字或迭代输入更容易;)

编辑与&#39;?&#39; ('?' definition and explication

String input1 = sc.nextLine();
int input = Integer.valueOf(((input1.length>7) ? input1.substring(0,7) : input1);

这允许不更改input1的值,这将保留原始输入

答案 2 :(得分:-1)

public static void trauncateNumber(int input1){

String Str=Integer.toString(input1);
//int changeValue=0;
if(Str.length()>7){
    //Str=Integer.toString(input1);
    Str=Str.substring(0, 7);
    input1=Integer.parseInt(Str);
}
//int changeValue=
System.out.println(input1);     

}