小编Rob*_* IV的帖子

Java:String split():我希望它在末尾包含空字符串

我有以下字符串:

String str = "\nHERE\n\nTHERE\n\nEVERYWHERE\n\n";
Run Code Online (Sandbox Code Playgroud)

如果你只是打印它,它会像这样输出(当然\n不会"字面"打印):

\n
HERE\n
\n
THERE\n
\n
EVERYWHERE\n
\n
\n
Run Code Online (Sandbox Code Playgroud)

当我调用该方法时split("\n"),我希望获得新的line(\n)字符之间的所有字符串,甚至是最后的空字符串.

例如,如果我今天这样做:

String strArray[] = str.split("\n");

System.out.println("strArray.length - " + strArray.length);
for(int i = 0; i < strArray.length; i++)
    System.out.println("strArray[" + i + "] - \"" + strArray[i] + "\"");
Run Code Online (Sandbox Code Playgroud)

我希望它像这样打印出来(输出A):

strArray.length - 8
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"
strArray[6] - ""
strArray[7] - ""
Run Code Online (Sandbox Code Playgroud)

目前,它打印如下(输出B),并跳过任何结束的空字符串:

strArray.length …
Run Code Online (Sandbox Code Playgroud)

java string split

64
推荐指数
2
解决办法
4万
查看次数

添加和减去双打会产生奇怪的结果

因此,当我使用Doubles在Java中添加或减去时,它会给我带来奇怪的结果.这里有一些:

如果我补充0.0 + 5.1,它给了我5.1.那是对的.

如果我添加5.1 + 0.1,它会给我5.199999999999(重复9s 的数量可能会关闭).那是错的.

如果我减去4.8 - 0.4,它会给我4.39999999999995(再次,重复9s可能会关闭).那是错的.

起初我认为这只是添加带小数值的双打的问题,但我错了.以下工作正常:

5.1 + 0.2 = 5.3
5.1 - 0.3 = 4.8
Run Code Online (Sandbox Code Playgroud)

现在,添加的第一个数字是保存为变量的double,尽管第二个变量从a中获取文本JTextField.例如:

//doubleNum = 5.1 RIGHT HERE
//The textfield has only a "0.1" in it.
doubleNum += Double.parseDouble(textField.getText());
//doubleNum = 5.199999999999999
Run Code Online (Sandbox Code Playgroud)

java double

28
推荐指数
1
解决办法
8万
查看次数

Python:对于包含文件的循环,如何获取forloop中的下一行?

我有一个文件,我想一次获得每一行,但一旦它到达一个特定的行,我需要获得接下来的几行信息.

这是一个代码示例:

rofile = open('foo.txt', 'r')
for line in rofile:
    print line
    if(line.strip() == 'foo'):
        line = line.next()
        print line
        line = line.next()
        print line
        line = line.next()
        print line
Run Code Online (Sandbox Code Playgroud)

当我第二次回来并循环时,第一个print语句应该打印文件中的第5行.有没有办法做到这一点?

编辑:很抱歉没有澄清细节.rofile是我正在迭代的文件对象.next()使用文件时是否是获取下一行的真正方法,我不知道.我对python中的文件操作没有多少经验.

python for-loop file

13
推荐指数
1
解决办法
4万
查看次数

如何在动态div中垂直对齐中间的按钮

我想使用bootstrap将div中的垂直对齐按钮居中

<div class="row" >
    <div class="col-xs-2">
        <button class="btn" style="color: #660066;">
            <i class="fa fa-arrow-left" data-ng-click="onClickBack()" ></i>
        </button>
    </div>
    <div class="col-xs-10">
        <h4> {{rootNode.nodeName}}</h4>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如您所见,我有两列,一列包含左侧的按钮,另一列包含Label.当label.length增加时,div会改变高度 - >我希望按钮始终以div为中心.

user-interface html5 css3 twitter-bootstrap twitter-bootstrap-3

13
推荐指数
2
解决办法
7万
查看次数

php:从字符串中删除特定索引?

我希望能够在字符串中指定索引并将其删除.

我有以下内容:

"Hello World!!"
Run Code Online (Sandbox Code Playgroud)

我想删除第四个索引(o在Hello中).这将是最终结果:

"Hell World!!"
Run Code Online (Sandbox Code Playgroud)

我试过了unset(),但那没用.我用谷歌搜索了如何做到这一点,这就是每个人都说的,但它对我没用.也许我没有正确使用它,idk.

php string

10
推荐指数
2
解决办法
2万
查看次数

当字符串的长度大于n时,如何打印字符串前n个字节?

所以我有一个字符串,它有一定的字节数(或长度).我说字节是因为字符串末尾没有NULL终止符.虽然,我知道字符串有多长.通常,正如我们所知,当你printf("%s", str);,它将继续打印每个字节,直到它变为NULL字符.我知道没有C字符串不是NULL终止,但我有一个奇怪的情况,我存储的东西(不是特定的字符串),我不存储NULL,但"事物"的长度.

这是一个小样本:

char* str = "Hello_World"; //Let's use our imagination and pretend this doesn't have a NULL terminator after the 'd' in World
long len = 5;

//Print the first 'len' bytes (or char's) of 'str'
Run Code Online (Sandbox Code Playgroud)

我知道你可以这样做:

printf("%.5s", str);
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,我很难对5进行编码,尽管在我的情况下,5是在变量中.我会做这样的事情:

printf("%.(%l)s", len, str);
Run Code Online (Sandbox Code Playgroud)

但我知道你做不到.但是让你知道我想要完成的事情.

c string printf byte

10
推荐指数
1
解决办法
2万
查看次数

Android:如何完全杀死作为后台进程单独运行的服务?

我有一个应用程序,它有一个Activity,用作常规GUI和一个服务.我的活动有两个按钮.一个按钮停止进程,一个按钮终止进程.我分别使用这些方法来启动和停止我的进程:

Intent i = null;
Button start;
Button stop;

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    i = new Intent(this, Service.class);
    start = (Button) findViewbyId(R.id.start_button);
    stop = (Button) findViewById(R.id.stop_button);

    start.setOnClickListener(new OnClickListener(){

        public void onClick(){
            startService(i);
        }
    }
    stop.setOnClickListener(new OnClickListener(){

        public void onClick(){
            stopService(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此服务不受actvivty或app的约束.我在Manifest中配置了这样的服务:

<service
    android:name="com.example.mypackage.Service"
    android:process=":remote"> 
    <intent-filter>
        <action
            android:name="com.example.mypackage.Service" />
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

当我启动服务时,它独立运行在其他任何东西上.这意味着,当我启动服务和onDestroy()应用程序时,服务仍在运行.我可以看到它仍在运行,因为通过adb,我运行ps命令,它说它是.

问题是我打电话的时候stopService(intent).当我stopService(intent)从活动方面调用时,它将运行onDestroy()服务中设置的代码行,但是当我运行psadb,它表示它仍在运行.

我希望能够完全破坏服务.我不确定服务是如何运作的,所以请不要犹豫,采取补救措施.我不确定它是否与我在服务中所做的事情有关.谢谢!

编辑: 当我启动服务时,我使用onStartCommand()并在那里运行一些代码.我也回来START_STICKYonStartCommand() …

service android background-process

10
推荐指数
3
解决办法
2万
查看次数

Java XML:ClassCastException DeferredTextImpl

这是我的代码:

// get the factory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

try {

    // Using factory get an instance of document builder
DocumentBuilder db = dbf.newDocumentBuilder();

// parse using builder to get DOM representation of the XML file
    dom = db.parse(file);

} catch (ParserConfigurationException pce) {
    pce.printStackTrace();
} catch (SAXException se) {
    se.printStackTrace();
} catch (IOException ioe) {
    ioe.printStackTrace();
}

NodeList n1 = dom.getChildNodes();
Element e1 = (Element) n1.item(0);

System.out.println(n1.getLength());
System.out.println(e1.getNodeName());

NodeList n2 = n1.item(0).getChildNodes();
Element e2 = (Element) n2.item(0);   //Line 61 …
Run Code Online (Sandbox Code Playgroud)

java xml parsing nodelist

8
推荐指数
1
解决办法
3万
查看次数

具有多模块项目的Maven阶段订单?

原谅我.我是Maven的菜鸟.

这是我的maven项目目录:

project/
    pom.xml
    moduleA/
    moduleB/
        sub-moduleA/
        sub-moduleB/
        sub-moduleC/
    moduleC/
Run Code Online (Sandbox Code Playgroud)

当然,在每个模块和子模块中,它们都有自己的模块和子模块pom.xml.此外,在此示例中moduleB取决于moduleAmoduleA取决于moduleC.我知道在maven中它经历了多个阶段,但是它每次只需要一个阶段,或者每个阶段一个.眼下,只有三个阶段,我关心的是compile,packageinstall.

例如:

是否在订单1中执行此操作:

compile moduleC
compile moduleA
compile moduleB
package moduleC
package moduleA
package moduleB
install moduleC
install moduleA
install moduleB
Run Code Online (Sandbox Code Playgroud)

或者它是在第2顺序中执行的:

compile moduleC
package moduleC
install moduleC
compile moduleA
package moduleA
install moduleA
compile moduleB
package moduleB
install moduleB
Run Code Online (Sandbox Code Playgroud)

或者它是以完全不同的顺序进行的,还是我完全脱离了对maven的理解?

我正在运行Maven 2.2.1.谢谢!

maven-2 maven multi-module

6
推荐指数
1
解决办法
1736
查看次数

内存不会重新分配

我正处于一个项目的中间,我正在尝试使用malloc()realloc().我知道当我使用malloc时,它可以工作,但是当我使用realloc时,它根本不会改变分配的内存量.我总是认为realloc将重新分配你已经malloced的内存.

这是我有的:

这包括:

#include <stdlib.h>
Run Code Online (Sandbox Code Playgroud)

我有一个结构:

struct student {
    int age;
    int numOfClasses;
    int gender; //0 male; 1 female
} student;
Run Code Online (Sandbox Code Playgroud)

当我想使用malloc制作其中7个结构时,我将使用以下代码行:

student stud* = (structure*) malloc(7*sizeof(student));
Run Code Online (Sandbox Code Playgroud)

这条线有效.该行代码采用结构的大小并乘以7乘以简而言之,这将获取足够的内存来生成7个结构的数组.

现在,如果我想将其更改为8,我会A在以前的malloced内存中执行此操作,并且B是新的malloced(或重新分配)内存:

在此输入图像描述

这是我在代码中的方式:

stud = (student*)realloc(stud, 8*sizeof(student));
Run Code Online (Sandbox Code Playgroud)

据我所知,realloc在第二个参数中获取变量,mallocs获取内存量.然后,它接受指针(或之前的malloced),并尽可能多地从给定指针填充malloced内存.当然,第二个参数必须大于之前的malloced大小,否则stud最终会丢失一些内存.现在这就是我的问题所在.当我调用上面的行时,它不会改变任何东西.malloced数组仍然是7的长度.我也很确定,我有足够的内存来重新分配.

我这样做了吗?我的问题在哪里?

c malloc struct realloc

6
推荐指数
1
解决办法
263
查看次数