Java 千位字符串
所以这个程序基本上是通过一个1000位的字符串(在这个例子中它被缩短),然后拉出组成最高乘积的5位数字。我能够输出构成最高乘积的数字之和,但不能输出构成最高乘积的实际数字Java 千位字符串,java,string,Java,String,所以这个程序基本上是通过一个1000位的字符串(在这个例子中它被缩短),然后拉出组成最高乘积的5位数字。我能够输出构成最高乘积的数字之和,但不能输出构成最高乘积的实际数字 public class ThousandDigitString { public static void main(String[] args){ String num = "73167176531"; int product = 0; int product2 = 0;
public class ThousandDigitString
{
public static void main(String[] args){
String num = "73167176531";
int product = 0;
int product2 = 0;
for(int i = 0; i < num.length()-4; i++)
{
product2 = Character.getNumericValue(num.charAt(i))* Character.getNumericValue(num.charAt(i+1)) * Character.getNumericValue(num.charAt(i+2)) *
Character.getNumericValue(num.charAt(i+3))* Character.getNumericValue(num.charAt(i+4));;
if(product2 > product)
{
product=product2;
}
}
System.out.println(product);
}
}
公共类千位字符串
{
公共静态void main(字符串[]args){
字符串num=“73167176531”;
int乘积=0;
int-product2=0;
对于(int i=0;i产品)
{
产品=产品2;
}
}
系统输出打印项次(产品);
}
}
当您将product2替换为product时,您可以存储构成产品的5位数字,然后在最后打印出来。在5个新变量中,或在一个数组中
public class ThousandDigitString
{
public static void main(String[] args){
String num = "73167176531";
int product = 0;
int product2 = 0;
int i1 = 0;
int i2 = 0;
int i3 = 0;
int i4 = 0;
int i5 = 0;
for(int i = 0; i < num.length()-4; i++)
{
product2 = Character.getNumericValue(num.charAt(i))* Character.getNumericValue(num.charAt(i+1)) * Character.getNumericValue(num.charAt(i+2)) *
Character.getNumericValue(num.charAt(i+3))* Character.getNumericValue(num.charAt(i+4));;
if(product2 > product)
{
int i1 = num.charAt(i);
int i2 = num.charAt(i+1);
int i3 = num.charAt(i+2);
int i4 = num.charAt(i+3);
int i5 = num.charAt(i+4);
}
}
System.out.println(product);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println(i5);
}
}
公共类千位字符串
{
公共静态void main(字符串[]args){
字符串num=“73167176531”;
int乘积=0;
int-product2=0;
int i1=0;
int i2=0;
int i3=0;
inti4=0;
int i5=0;
对于(int i=0;i产品)
{
int i1=字符数(i);
int i2=字符数(i+1);
int i3=字符数(i+2);
int i4=字符数(i+3);
int i5=字符数(i+4);
}
}
系统输出打印项次(产品);
系统输出打印LN(i1);
系统输出println(i2);
系统输出打印Ln(i3);
系统输出打印LN(i4);
系统输出打印LN(i5);
}
}
如果您熟悉单个变量,那么数组将比单个变量更整洁。我认为这比创建它要容易得多。将字符串作为数组进行分析,找出最大的5位数字。实际上不需要在循环中进行乘法
一旦你找到前5位数字。这些是你想要的数字。将它们转换为int并相乘,即可得到乘积。您可以将单个字符保存到数组或ArrayList中,并在检查product2>product是否关闭数组时保存 例如:
public class ThousandDigitString
{
public static void main(String[] args){
String num = "73167176531";
int product = 0;
int product2 = 0;
int index = 0;
int[] numbers = new int[5];
for(int i = 0; i < num.length()-4; i++)
{
product2 = Character.getNumericValue(num.charAt(i))* Character.getNumericValue(num.charAt(i+1)) * Character.getNumericValue(num.charAt(i+2)) *
Character.getNumericValue(num.charAt(i+3))* Character.getNumericValue(num.charAt(i+4));;
if(product2 > product)
{
product=product2;
index = i;
}
}
numbers[0] = Character.getNumericValue(num.charAt(index));
numbers[1] = Character.getNumericValue(num.charAt(index+1));
numbers[2] = Character.getNumericValue(num.charAt(index+2));
numbers[3] = Character.getNumericValue(num.charAt(index+3));
numbers[4] = Character.getNumericValue(num.charAt(index+4));
System.out.println(Arrays.toString(numbers));
System.out.println(product);
}
}
公共类千位字符串
{
公共静态void main(字符串[]args){
字符串num=“73167176531”;
int乘积=0;
int-product2=0;
int指数=0;
int[]数字=新的int[5];
对于(int i=0;i产品)
{
产品=产品2;
指数=i;
}
}
数字[0]=Character.getNumericValue(num.charAt(索引));
数字[1]=Character.getNumericValue(num.charAt(索引+1));
数字[2]=Character.getNumericValue(num.charAt(索引+2));
数字[3]=Character.getNumericValue(num.charAt(索引+3));
数字[4]=Character.getNumericValue(num.charAt(索引+4));
System.out.println(Arrays.toString(numbers));
系统输出打印项次(产品);
}
}
int startingIndex=0;
对于(int i=0;i产品)
{
产品=产品2;
启动指数=i;
}
}
系统输出打印项次(产品);
//从startingIndex到startingIndex+4的字符串中检索数字
那么,您想要打印或以其他方式存储构成产品的数字的问题是什么?您的问题是什么?它们应该是连续的吗?因为我认为7*6*7*7*6会提供最高的产品,而你的product2
不会发现这一点。你应该更具体地回答这个问题。例如,数字应该是连续的信息是不清楚的,但他实际上是在搜索5个连续数字的最大乘积,或者只是将5个数字的起始索引存储在一个整数变量中。
int startingIndex = 0;
for(int i = 0; i < num.length()-4; i++)
{
product2 = Character.getNumericValue(num.charAt(i))* Character.getNumericValue(num.charAt(i+1)) * Character.getNumericValue(num.charAt(i+2)) *
Character.getNumericValue(num.charAt(i+3))* Character.getNumericValue(num.charAt(i+4));;
if(product2 > product)
{
product=product2;
startingIndex = i;
}
}
System.out.println(product);
// retrieve digits from string at startingIndex to startingIndex + 4