调用子字符串方法?

时间:2016-02-08 16:32:29

标签: java methods

我对Java很新。在过去的几周里,我一直在努力教自己java。这主要是基于我在网上找到的教程和我能找到的论坛。所以请记住这一点,非常感谢您分享的任何其他批评!我目前正在尝试创建一个运行if-else循环的计算器。我正在开发一种方法,允许用户根据if

的原则派生一个函数
f(x)=ax^n+bx^o+cx^p... then f'(x)=anx^n-1+box^o-1+cpx^p-1...

我尝试使用.split()分隔函数的各个部分,对各个部分执行更改,然后将它们一起打印。我可以通过这个大部分方式,但我无法将带负号的字符串转换为整数,所以我试图调用一个使用.substring的方法,然后用replaceAll去掉负号然后转换到整数。但是,我一直在收到一个编译错误,指出 "实际和正式的参数列表的长度不同" 。任何人都可以解释为什么会发生这种情况吗?

import java.util.Scanner;
import java.util.Arrays;
import java.lang.String;
public class InputInteger
{
public String changeSign(String second) {
    String negative = second.substring(0,1);
    return negative;
}
public static void splitFunction() {
  Scanner o = new Scanner(System.in);
  String function = o.next();
  String[] parts = function.split("(?=\\+|\\-)");
  for (int i = 0; i < parts.length;) { 
        String[] second = parts[i].split("(?=[0-9]+|[a-z]+|[A-Z]+\\^)");
        InputInteger.changeSign();
        if (negative = ("-")) {
            second = second.replace("-","");
      int x = Integer.parseInt(second[0]);
      int y = Integer.parseInt(second[2]);
      int w = x*y;
      int z = y-1;
      System.out.println(w + "x^" + z);
      i++;
    }
  }
}

3 个答案:

答案 0 :(得分:0)

  • changeSign(String second)应定义为static
  • negative变量未定义
  • 您应该将字符串与equals()方法
  • 进行比较
  • 你在没有这种方法的数组上调用.replace(...)

这些只是编译错误,我看到至少有一个运行时问题:

  • 仅在i中增加if,这可能会导致无限期 环...

我建议您使用一些好的IDE,如Eclipse或IntelliJ IDEA,这将帮助您处理警告/错误/等。

答案 1 :(得分:0)

您正在谈论的问题是方法不起作用。你必须在函数中传递参数,如

InputInteger.changeSign(function);

InputInteger.changeSign(second[i]);

根据要求

答案 2 :(得分:0)

首先,在您的代码if (negative = ("-"))中,您有一个&#34; =&#34;我认为你打算使用&#34; ==&#34;为了比较。其次,方法parseInt()以及valueOf()(我更喜欢parseInt())应该处理负数就好了。没有必要删除&#34; - &#34;。 Yout方法changeSign()接受String参数,也是您的方法ChangeSign()返回String值,您必须将结果分配给某些字符串:String negative = InputInteger.changeSign(str);。另外,String类还有一个方法startsWith(String prefix),它更适合你的substring()。希望这可以帮助。如果有的话,有一个开源库提供了一个实用程序,用于将String解析为Integer(以及其他内容)。在那个util中有一个方法

parseStringToInt(String numStr, int defaultValue, String nullOrEmptyStringErrorMessage, String numberFormatErrorMessage)

尝试将String解析为Integer,如果不成功,则返回默认值,并且不会抛出异常。对于负整数,该方法绝对可以正常工作。以下是有关该库的文章的链接。https://www.linkedin.com/pulse/open-source-java-library-some-useful-utilities-michael-gantman?trk=pulse_spock-articles。在那里,您将找到有关从何处获取库的说明,包括javadoc和源代码。