Java 千位字符串

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;

所以这个程序基本上是通过一个1000位的字符串(在这个例子中它被缩短),然后拉出组成最高乘积的5位数字。我能够输出构成最高乘积的数字之和,但不能输出构成最高乘积的实际数字

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