我正在做练习,我必须从键盘输入一个字符串.该字符串将是简单的算术,例如"2 + 4 + 6 - 8 + 3 - 7".是的,格式必须是这样的.中间有单个空格.
这个想法是采取这个字符串,并最终打印出答案.到目前为止,这是我的代码:
public class AddemUp {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.print("Enter something like 8 + 33 + 1345 + 137: ");
String s = kb.nextLine();
Scanner sc = new Scanner(s);
sc.useDelimiter("\\s*\\+\\s*|\\s*\\-\\s*");
int sum = 0;
int theInt;
Scanner sc1 = new Scanner(s);
sc1.useDelimiter("\\s*\\s*");
String plusOrMinus = sc1.next();
int count = 0;
if(s.startsWith("-"))
{
sum -= sc.nextInt();
}
while(sc.hasNextInt())
{
theInt = sc.nextInt();
if(count …Run Code Online (Sandbox Code Playgroud) PMD 失败:...规则:UnusedPrivateMethod 优先级:3 避免未使用的私有方法,例如“printMyString(String)”
private void anyMethod() {
var myString = "a String";
printMyString(myString);
}
private void printMyString(String string) {
System.out.println(string);
}
Run Code Online (Sandbox Code Playgroud)
使用maven这个插件
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.12.0</version>
Run Code Online (Sandbox Code Playgroud) 我正在阅读“ Java并发实践”,这种情况对我来说还不太清楚。为什么这段代码是ThreadSafe?
@ThreadSafe
public class ListHelper<E> {
public List<E> list =
Collections.synchronizedList(new ArrayList<E>());
...
public boolean putIfAbsent(E x) {
synchronized (list) {
boolean absent = !list.contains(x);
if (absent)
} }
}
Run Code Online (Sandbox Code Playgroud)
我们锁定SynchronizedList 列表的实例, 但在使用内部对象的内部
final Object mutex; // Object on which to synchronize
public void add(int index, E element) {
synchronized (mutex) {list.add(index, element);}
}
Run Code Online (Sandbox Code Playgroud)
我们仍然在两个不同的对象上具有锁。为什么安全呢?