我试图使用一个循环来设置每个按钮单击时的动作(因为大多数按钮只会返回它们的文本值),但是我收到一个错误,指出"变量'i'是从内部类中访问的,需要的被宣布为最终".我怎么能绕过这个?
这就是我得到的
String getValuesPressed(){
for(int i = 0; i < buttonList.length; i++){
buttonList[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(i == 0){//error occurs here
//do stuff
}
}
});
}
return textOnScreen;
}
Run Code Online (Sandbox Code Playgroud) 我试图将配置的状态级别设置为"info",但我得到以下输出:
INFO Log4j appears to be running in a Servlet environment, but there's no log4j-web module available. If you want better web container support, please add the log4j-web JAR to your web archive or server lib directory.
Run Code Online (Sandbox Code Playgroud)
我的log4j2.xml有以下内容
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" packages="org.graylog2.log4j2">
<Properties>
<Property name="default_pattern">%d{MM/dd/yyyy hh:mm:ss} %5p %c{1} - %m%n</Property>
</Properties>
<!-- LOG4J2 APPENDERS -->
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${default_pattern}"/>
</Console>
<Console name="com.sum.exam" target="SYSTEM_OUT">
<PatternLayout pattern="${default_pattern}"/>
</Console>
<Console name="auth" target="SYSTEM_OUT">
<PatternLayout pattern="${default_pattern}"/>
</Console>
<Console name="com.d.e" target="SYSTEM_OUT">
<PatternLayout …
Run Code Online (Sandbox Code Playgroud) 如何在propterties文件中的log4j2中创建keyvaluepair?
我知道在log4j版本1中,它完成了:
log4j.appender.x.additionalFields={'key': 'value'}
Run Code Online (Sandbox Code Playgroud)
并且log4j2中的XML方式是:
<KeyValuePair key="key" value="value"/>
Run Code Online (Sandbox Code Playgroud)
所以这样做是为这样的属性文件:
`appender.x.keyValuePair ={'key': 'value'}`
Run Code Online (Sandbox Code Playgroud)
?
昨天我的 IDE 工作得很好,直到我更新了我的 Ubuntu,一旦我重新启动我的计算机,我注意到应用程序每 3 秒就会冻结一次,即使我只是在滚动。
我已经尝试将我的 IDE 更新到 2019.3.4 版,但没有做任何事情。我也多次重新启动我的电脑(徒劳的尝试),但没有任何改变。
只有我的 IDE 有问题,没有其他问题。
如果重要的话,这是我在 /var/log/apt/history-log 中看到的最后几个日志:
Start-Date: 2020-04-15 08:25:05
Commandline: /usr/bin/unattended-upgrade
Upgrade: thunderbird-locale-en-us:amd64 (1:68.4.1+build1-0ubuntu0.19.10.1, 1:68.7.0+build1-0ubuntu0.19.10.1)
End-Date: 2020-04-15 08:25:06
Start-Date: 2020-04-17 08:53:42
Commandline: /usr/bin/unattended-upgrade
Upgrade: git-man:amd64 (1:2.20.1-2ubuntu1.19.10.1, 1:2.20.1-2ubuntu1.19.10.2)
End-Date: 2020-04-17 08:53:52
Start-Date: 2020-04-17 08:53:57
Commandline: /usr/bin/unattended-upgrade
Upgrade: git:amd64 (1:2.20.1-2ubuntu1.19.10.1, 1:2.20.1-2ubuntu1.19.10.2)
End-Date: 2020-04-17 08:53:58
Start-Date: 2020-04-17 08:59:05
Commandline: aptdaemon role='role-commit-packages' sender=':1.4811'
Upgrade: libasound2-data:amd64 (1.1.9-0ubuntu1.2, 1.1.9-0ubuntu1.3), slack-desktop:amd64 (4.4.0, 4.4.2), google-chrome-stable:amd64 (81.0.4044.92-1, 81.0.4044.113-1), google-cloud-sdk-app-engine-java:amd64 (288.0.0-0, 289.0.0-0), google-cloud-sdk-app-engine-python:amd64 (288.0.0-0, 289.0.0-0), google-cloud-sdk:amd64 (288.0.0-0, 289.0.0-0), libasound2:amd64 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将附加的 json 文件发送到电子邮件,但是由于某种原因,在发送/创建电子邮件时未附加 json 文件。注意:我不希望用户选择要附加的文件,我希望它自动固定/设置。
我有以下权限 AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)
和代码
private void backupJsonToEmail(String jsonString) {
// create file
if(!getFilesDir().exists()){
getFilesDir().mkdir();
}
String filePath = getFilesDir() + File.separator + BACKUP_NAME;
System.out.println("file path: " + filePath);
// /data/user/0/com.my.stuff/files/backup.json
try {
FileOutputStream fos = new FileOutputStream(filePath);
DataOutputStream outStream = new DataOutputStream(new BufferedOutputStream(fos));
outStream.writeBytes(jsonString);
outStream.close();
// send to email
try {
File file = new File(filePath);
long fileKbSize = file.length() / 1024;
System.out.println("FILE SIZE …
Run Code Online (Sandbox Code Playgroud) 我有一个非 Spring Boot Java 应用程序,想要使用 GitHub Secrets 将一些密钥存储和读取到我的applications.properties
文件中。
我已经对这些值进行了 Base64 编码并将它们存储在 GH Secrets 中,现在我尝试在我的application.properties
文件中像这样访问它们:
com.stuff.some-prod-key=${{ secrets.SOME_PROD_KEY }}
Run Code Online (Sandbox Code Playgroud)
但是,当尝试使用此语法时,${{ secrets.SOME_PROD_KEY }}
如果我已将其硬编码到文件中,则该值将与实际值相对应application.properties
。
如果没有Spring Boot,这可能吗?如果是这样,我是否需要先让我的属性文件从另一个文件中读取它,还是我这样做完全错误?
我知道在log4j中你可以通过做类似的事情来使用多个appender:
log4j.logger.com.x=DEBUG, append1, append2
Run Code Online (Sandbox Code Playgroud)
但log4j2中的等价性是什么?
会是这样的:
logger.com.x.level = DEBUG
logger.com.x.appenderRefs = append1, append2
Run Code Online (Sandbox Code Playgroud)
?
我现在正在拔头发。我试图通过比较来检查一个值(恰好是数字 5 的字符)是否是一个数字
(number? (string->number (list->string nextchar)))
Run Code Online (Sandbox Code Playgroud)
但我不断收到以下错误:
list->string: contract violation
expected: (listof char?)
given: #\5
Run Code Online (Sandbox Code Playgroud)
如何将字符转换为数字以及字符串?
我的错误是关于 main 中的最后两个赋值语句。我试图通过让每个节点指向 2 个其他节点来创建一个基本的树:左和右。我也尝试在创建它们时在 n1、n2 和 n3 前面添加 *,但这也不起作用......
#include <iostream>
#include <string.h>
using namespace std;
class Node{
public:
string value;
Node *left, *right;
public:
Node(string s, Node *l, Node *r){
value = s;
left = l;
right = r;
}
void display(){
cout << value << left->value << right->value;
}
};
int main(){
Node n1("this", NULL,NULL);
Node n2("is", NULL, NULL);
Node n3("next", NULL, NULL);
n1.left = n2;
n1.right = n3;
n1.display();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我试图用按钮显示一个计算器,但唯一显示的是一个空的JFrame.
我能想到的唯一一件事是因为我正在构造函数中完成所有工作,并且我的主要只创建对象而不执行任何其他操作.但是,如果是这种情况,为什么它仍然会显示一个空的GUI而不是什么?或者我只是这样做完全错了?
import java.awt.GridLayout;
import java.awt.TextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
public class MyFrame extends JFrame{
private GridLayout grid;
private final String ADD = "+";
private final String SUB = "-";
private final String MULT = "*";
private final String DIV = "/";
private final String CLR = "C";
private final String EQ = "=";
private TextField textOnScreen;
private final String[] buttonValues= {
"7", "8", "9", ADD,
"4", "5", "6", SUB,
"1", "2", "3", MULT,
"0", CLR, EQ, DIV …
Run Code Online (Sandbox Code Playgroud) 我试图将我的JTextArea设置为占据屏幕的最大长度,以便接下来的东西,在这种情况下是一个按钮,将在一个新行开始,但我不知道如何做到这一点.通过将JTextArea的大小设置为从20更改为1000但我没有做任何事情,我搞砸了.
如何让我的textarea占用整个第一行,然后让我添加的下一个项目开始在下一行?这是我到目前为止所拥有的......
MyFrame(){//constructor
super("Simple Calculator");
p = new JPanel();
grid = new GridLayout(4, 4, 3, 3);
p.setLayout(grid);
setSize(400, 500);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setUpTextScreen();
//create buttons
for(int i = 0; i < buttonValues.length; i++){
p.add(new JButton(buttonValues[i]));
}
add(p);
setVisible(true);
}
private void setUpTextScreen() {
textOnScreen = new JTextArea(7, 1000);
textOnScreen.setText("0");//default
textOnScreen.setEditable(false);
p.add(textOnScreen);
}
Run Code Online (Sandbox Code Playgroud)