繁体   English   中英

JAVA截断扫描仪输入

[英]JAVA truncate scanner input

我有一个程序要求用户输入一个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提出任何建议,那将非常有帮助:)

好吧,有几件事。

首先,我认为最好使用ArrayList并处理Integers ,而不是像int这样的原始类型。 如果使用ArrayList ,则只需执行.add(Integer e)将下一个Integer放入列表中。

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

至于反转输入,这很简单,请改用i-- ,但是我认为您可以自己解决这个问题。

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

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

显然比分别存储每个数字或遍历输入更容易;)

用“?” 编辑 “?”的定义和说明

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

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

公共静态无效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);     

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM