请查看以下java代码
import java.util.Scanner;
public class Main
{
static int mul=1;
static String convert;
static char[] convertChar ;
static StringBuffer buffer = new StringBuffer("");
public static void main(String[]args)
{
Scanner scan = new Scanner(System.in);
int number=0;
int loopValue = scan.nextInt();
//System.out.println("print: "+loopValue);
for(int i=0;i<loopValue;i++)
{
number = scan.nextInt();
// System.out.println("print: "+number);
for(int a=1;a<=number/2;a++)
{
if(number%a==0)
{
//System.out.println(a);
mul = mul*a;
//System.out.println(mul);
}
}
convert = String.valueOf(mul);
convertChar = convert.toCharArray();
if(convertChar.length>4)
{
/*System.out.print(convertChar[convertChar.length-4]);
System.out.print(convertChar[convertChar.length-3]);
System.out.print(convertChar[convertChar.length-2]);
System.out.print(convertChar[convertChar.length-1]);
System.out.println();*/
buffer.append(convertChar[convertChar.length-4]);
buffer.append(convertChar[convertChar.length-3]);
buffer.append(convertChar[convertChar.length-2]);
buffer.append(convertChar[convertChar.length-1]);
System.out.println(buffer);
}
else
{
System.out.println(mul);
}
//System.out.println(mul);
mul = 1;
}
}
}
此代码用于计算给定数字的正除数的乘积。我在这里使用过扫描仪,因为我不知道输入了多少输入。这就是为什么我不能像
那样的东西int a, b;
cin >> a >> b
在C ++中。所有输入都将由测试引擎插入一个单一的,如下面的
6 2 4 7 8 90 3456
如何使用C ++实现Java“Scanner”?是否有头文件?请帮忙!
答案 0 :(得分:3)
您似乎正在使用Scanner
从标准输入流中一次读取一个整数。这可以通过提取运算符operator>>
轻松完成。
替换此代码:
Scanner scan = new Scanner(System.in);
int number=0;
int loopValue = scan.nextInt();
//System.out.println("print: "+loopValue);
for(int i=0;i<loopValue;i++)
{
number = scan.nextInt();
// System.out.println("print: "+number);
有了这个:
int number=0;
int loopvalue=0;
std::cin >> loopvalue;
for(int i = 0; i < loopValue; i++)
{
std::cin >> number;
您应该在std::cin
操作后检查>>
的值,以确保它们成功。
参考:
答案 1 :(得分:0)
如果您使用std::cin >> value;
来读取值,那么只有在检测到换行后才能处理整行。
如果要在键入时处理每个数字,则可以使用如下函数:
int nextInt()
{
std::stringstream s;
while (true)
{
int c = getch();
if (c == EOF) break;
putch(c); // remove if you don't want echo
if ((c >= '0' && c <= '9') || (c == '-' && s.str().length() == 0))
s << (char)c;
else if (s.str().length() > 0)
break;
}
int value;
s >> value;
return value;
}
好的,可能有更有效的方法来编写它,但它会逐个读取输入字符,直到遇到一个数字,并且当遇到一个数字以外的任何数字时,它将返回读取的任何数字。
E.g。 1 2 3 4将在第一次呼叫时返回1,在第二次呼叫时返回2。