gpt4 book ai didi

java - 如何将 Char 数组的子字符串传递给 Java 的另一个函数?

转载 作者:行者123 更新时间:2023-11-29 04:38:47 25 4
gpt4 key购买 nike

这现在工作得很好......就目前而言,我不喜欢我将 readIn(一个字符串)转换为 tokens 时的使用方式(一个 char[]),所以我想知道是否有可能将字符从 i 获取到 tokens.length()-1 或但是,您会找到数组的最后一个元素,最好是字符串。

我想你可以做一个循环,也许用一个 StringBuilder。这是一个非常简单的方法。我无法想象它的效率非常高。我想知道是否真的有更好的方法。

下面的代码基本上只是在说“嘿,我做了一些事情。”


嘿伙计们。我有一个像这样开始的方法:

public int evaluate(String readIn)
{
char[] tokens = readIn.toCharArray();

我从另一个函数中获取一个字符串。它应该看起来像“14+5^2”或其他东西,因为其他方法已经将它纯化为一个方程。然而,这个等式可以包含变量名(在执行的早期初始化),比如“x”,所以它看起来像“x+5^myVal”。

我在之前尝试执行此程序时得到了一个函数,它解释变量名称,其中传入的是一个子字符串,从变量被认为所在的位置开始(通常,只是每个字符,尚未处理)。这确实有效(给定一个完整的字符串),我只是确保提供所有相关信息。

public returnHelp isVariable(String readIn){
int i;
returnHelp returnType = new returnHelp();

for (i = 0; i < name.size(); i++){
//loop through all the variables we have!
if(readIn.length() >= getName(i).length()){
//ensure we don't get an index out of bounds error
if (readIn.substring(0, getName(i).length()-1).equals(getName(i))){
returnType.setStuff(true, i);
return returnType; //we found that it was, in fact, a variable
}
}
}
return returnType;
}

这就是我的 returnHelp 类的样子。我这样做是为了让我可以返回 2 个值而不是仅返回 1 个值,因为如果我不知道变量在符号表中的位置,知道它是一个变量也无济于事。如果我们将它们放在不同的函数中,我们只需执行相同的搜索循环即可找到它的位置。也许我只是懒惰。

public class returnHelp {
boolean question = false;
int pointer = 0;

public void setStuff(boolean yes, int num){
question = yes;
pointer = num;
}
}

为了避免混淆,这是在 isVariable 中引用的“名称”

ArrayList<String> name = new ArrayList<String>(); 
ArrayList<Double> value = new ArrayList<Double>();

但是,我使用的是 char[],而不是字符串。现在,我只是在处理原始字符串(将 subString 设置为我们在循环中的位置),但这感觉很草率。

有没有一种方法可以传入 char[] 的“其余部分”,而不是求助于返回传入的 String。

假设我在 token [i]。现在,我正在使用 variables.isVariable(readIn.substring(i))。真的感觉好像我不应该使用它。

最佳答案

传递“子数组”的通常模式是传递offsetcount(或fromto) 除了数组之外的参数。

例如,Writer有这个方法:

public abstract void write(char[] cbuf,
int off,
int len)
throws IOException

Writes a portion of an array of characters.

关于java - 如何将 Char 数组的子字符串传递给 Java 的另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40121508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com